29 if(expr.
id()==ID_address_of)
42 if(expr.
id()==ID_symbol)
47 dirty.insert(identifier);
49 else if(expr.
id()==ID_member)
53 else if(expr.
id()==ID_index)
58 else if(expr.
id()==ID_dereference)
62 else if(expr.
id()==ID_if)
73 for(
const auto &d :
dirty)
84 if(insert_result.second)
const if_exprt & to_if_expr(const exprt &expr)
Cast a generic exprt to an if_exprt.
void add_function(const goto_functiont &goto_function)
void find_dirty_address_of(const exprt &expr)
Variables whose address is taken.
void die_if_uninitialized() const
const irep_idt & get_identifier() const
const address_of_exprt & to_address_of_expr(const exprt &expr)
Cast a generic exprt to an address_of_exprt.
const dereference_exprt & to_dereference_expr(const exprt &expr)
Cast a generic exprt to a dereference_exprt.
const irep_idt & id() const
void build(const goto_functionst &goto_functions)
API to expression classes.
::goto_functiont goto_functiont
const member_exprt & to_member_expr(const exprt &expr)
Cast a generic exprt to a member_exprt.
#define forall_operands(it, expr)
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
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.
void find_dirty(const exprt &expr)
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
Operator to return the address of an object.
Base class for all expressions.
std::unordered_set< irep_idt > dirty
std::unordered_set< irep_idt > dirty_processed_functions
void output(std::ostream &out) const
#define forall_goto_program_instructions(it, program)
const index_exprt & to_index_expr(const exprt &expr)
Cast a generic exprt to an index_exprt.