24 if(
program.instructions.empty())
30 for(goto_programt::instructionst::const_reverse_iterator
31 rit=
program.instructions.rbegin();
32 rit !=
program.instructions.rend();
38 if(rit ==
program.instructions.rbegin())
52 std::cout <<
"Previous cone: \n";
54 for(
const auto &expr : curr)
55 std::cout <<
format(expr) <<
" ";
57 std::cout <<
"\nCurrent cone: \n";
59 for(
const auto &expr : next)
60 std::cout <<
format(expr) <<
" ";
79 goto_programt::instructionst::const_reverse_iterator rit,
82 if(rit ==
program.instructions.rbegin())
87 goto_programt::instructionst::const_reverse_iterator next=rit;
92 if(rit->condition() !=
false)
95 for(goto_programt::targetst::const_iterator t=rit->targets.begin();
96 t != rit->targets.end();
99 unsigned int loc=(*t)->location_number;
101 targets.insert(s.begin(), s.end());
105 if(rit->condition() ==
true)
110 else if(rit->is_assume() || rit->is_assert())
112 if(rit->condition() ==
false)
118 unsigned int loc=next->location_number;
120 targets.insert(s.begin(), s.end());
128 next.insert(curr.begin(), curr.end());
137 for(
const auto &expr : lhs_syms)
138 if(curr.find(expr)!=curr.end())
155 if(expr.
id() == ID_symbol ||
156 expr.
id() == ID_index ||
157 expr.
id() == ID_member ||
158 expr.
id() == ID_dereference)
164 for(
const auto &op : expr.
operands())
const goto_programt & program
void get_succs(goto_programt::instructionst::const_reverse_iterator rit, expr_sett &targets)
void cone_of_influence(const expr_sett &targets, expr_sett &cone)
void gather_rvalues(const exprt &expr, expr_sett &rvals)
Base class for all expressions.
This class represents an instruction in the GOTO intermediate representation.
const exprt & assign_lhs() const
Get the lhs of the assignment for ASSIGN.
const exprt & assign_rhs() const
Get the rhs of the assignment for ASSIGN.
const irep_idt & id() const
std::unordered_set< exprt, irep_hash > expr_sett