42 statement == ID_expression || statement == ID_array_set ||
43 statement == ID_array_equal || statement == ID_array_copy ||
44 statement == ID_array_replace || statement == ID_havoc_object ||
45 statement == ID_input || statement == ID_output)
47 for(
const auto &op : code.
operands())
62 if(expr.
id() == ID_address_of)
69 for(
const auto &op : expr.
operands())
75 if(expr.
id() == ID_symbol)
79 dirty.insert(identifier);
81 else if(expr.
id() == ID_member)
85 else if(expr.
id() == ID_index)
90 else if(expr.
id() == ID_dereference)
94 else if(expr.
id() == ID_if)
105 for(
const auto &d :
dirty)
117 if(insert_result.second)
Operator to return the address of an object.
Data structure for representing an arbitrary statement in a program.
const irep_idt & get_statement() const
void add_function(const goto_functiont &goto_function)
void build(const goto_functionst &goto_functions)
void find_dirty(const exprt &expr)
void find_dirty_address_of(const exprt &expr)
void output(std::ostream &out) const
std::unordered_set< irep_idt > dirty
void search_other(const goto_programt::instructiont &instruction)
void die_if_uninitialized() const
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
::goto_functiont goto_functiont
A goto function, consisting of function body (see body) and parameter identifiers (see parameter_iden...
This class represents an instruction in the GOTO intermediate representation.
const goto_instruction_codet & get_other() const
Get the statement for OTHER.
instructionst instructions
The list of instructions in the goto program.
std::unordered_set< irep_idt > dirty_processed_functions
void populate_dirty_for_function(const irep_idt &id, const goto_functionst::goto_functiont &function)
Analyse the given function with dirtyt if it hasn't been seen before.
const irep_idt & id() const
const irep_idt & get_identifier() const
Variables whose address is taken.
API to expression classes for Pointers.
const dereference_exprt & to_dereference_expr(const exprt &expr)
Cast an exprt to a dereference_exprt.
const address_of_exprt & to_address_of_expr(const exprt &expr)
Cast an exprt to an address_of_exprt.
API to expression classes.
const if_exprt & to_if_expr(const exprt &expr)
Cast an exprt to an if_exprt.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
const member_exprt & to_member_expr(const exprt &expr)
Cast an exprt to a member_exprt.
const index_exprt & to_index_expr(const exprt &expr)
Cast an exprt to an index_exprt.