CBMC
cone_of_influence.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Loop Acceleration
4 
5 Author: Matt Lewis
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_GOTO_INSTRUMENT_ACCELERATE_CONE_OF_INFLUENCE_H
13 #define CPROVER_GOTO_INSTRUMENT_ACCELERATE_CONE_OF_INFLUENCE_H
14 
16 
17 #include <util/symbol_table.h>
18 
19 #include <unordered_set>
20 
21 typedef std::unordered_set<exprt, irep_hash> expr_sett;
22 
23 void cone_of_influence(goto_programt &program,
24  expr_sett &targets,
25  expr_sett &cone);
26 
28 {
29  public:
31  const symbol_tablet &symbol_table) :
32  program(_program),
33  ns(symbol_table)
34  {
35  }
36 
37  void cone_of_influence(const expr_sett &targets, expr_sett &cone);
38  void cone_of_influence(const exprt &target, expr_sett &cone);
39 
40  protected:
42  const expr_sett &curr,
43  expr_sett &next);
44  void get_succs(goto_programt::instructionst::const_reverse_iterator rit,
45  expr_sett &targets);
46  void gather_rvalues(const exprt &expr, expr_sett &rvals);
47 
48  typedef std::unordered_map<unsigned int, expr_sett> cone_mapt;
50 
52  const namespacet ns;
53 };
54 
55 #endif // CPROVER_GOTO_INSTRUMENT_ACCELERATE_CONE_OF_INFLUENCE_H
symbol_tablet
The symbol table.
Definition: symbol_table.h:13
cone_of_influencet::program
const goto_programt & program
Definition: cone_of_influence.h:51
cone_of_influencet::cone_of_influence
void cone_of_influence(const expr_sett &targets, expr_sett &cone)
Definition: cone_of_influence.cpp:20
exprt
Base class for all expressions.
Definition: expr.h:55
cone_of_influencet::gather_rvalues
void gather_rvalues(const exprt &expr, expr_sett &rvals)
Definition: cone_of_influence.cpp:153
cone_of_influencet
Definition: cone_of_influence.h:27
cone_of_influencet::ns
const namespacet ns
Definition: cone_of_influence.h:52
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:90
cone_of_influencet::cone_map
cone_mapt cone_map
Definition: cone_of_influence.h:49
expr_sett
std::unordered_set< exprt, irep_hash > expr_sett
Definition: cone_of_influence.h:21
cone_of_influence
void cone_of_influence(goto_programt &program, expr_sett &targets, expr_sett &cone)
cone_of_influencet::get_succs
void get_succs(goto_programt::instructionst::const_reverse_iterator rit, expr_sett &targets)
Definition: cone_of_influence.cpp:78
goto_program.h
cone_of_influencet::cone_mapt
std::unordered_map< unsigned int, expr_sett > cone_mapt
Definition: cone_of_influence.h:48
goto_programt
A generic container class for the GOTO intermediate representation of one function.
Definition: goto_program.h:72
symbol_table.h
Author: Diffblue Ltd.
goto_programt::instructiont
This class represents an instruction in the GOTO intermediate representation.
Definition: goto_program.h:180
cone_of_influencet::cone_of_influencet
cone_of_influencet(const goto_programt &_program, const symbol_tablet &symbol_table)
Definition: cone_of_influence.h:30