ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
goto_cfg.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <unordered_set>
5#include <unordered_map>
6#include <string_view>
9
17{
18public:
19 goto_cfg(goto_functionst &goto_functions);
20
26 void dump_graph() const;
27
37 {
38 enum class terminator_type
39 {
42 };
43 goto_programt::instructionst::iterator begin;
44 goto_programt::instructionst::iterator end;
45 std::set<std::shared_ptr<basic_block>> successors;
46 std::unordered_set<std::shared_ptr<basic_block>> predecessors;
48 };
49
50 std::unordered_map<std::string, std::vector<std::shared_ptr<basic_block>>>
52};
goto_cfg(goto_functionst &goto_functions)
Definition goto_cfg.cpp:3
void dump_graph() const
Generates a dot file containing the CFG.
Definition goto_cfg.cpp:115
std::unordered_map< std::string, std::vector< std::shared_ptr< basic_block > > > basic_blocks
Definition goto_cfg.h:51
Definition goto_functions.h:56
@ OTHER
Definition goto_program.h:33
A basic block is a sequence of instructions that has no branches in it.
Definition goto_cfg.h:37
goto_programt::instructionst::iterator begin
Definition goto_cfg.h:43
terminator_type
Definition goto_cfg.h:39
@ OTHER
Definition goto_cfg.h:40
@ IF_GOTO
Definition goto_cfg.h:41
terminator_type terminator
Definition goto_cfg.h:47
goto_programt::instructionst::iterator end
Definition goto_cfg.h:44
std::set< std::shared_ptr< basic_block > > successors
Definition goto_cfg.h:45
std::unordered_set< std::shared_ptr< basic_block > > predecessors
Definition goto_cfg.h:46