21 if(src.
id() == ID_element_address)
23 else if(src.
id() == ID_field_address)
32 const std::unordered_set<symbol_exprt, irep_hash> &
address_taken,
38 if(a_stripped == b_stripped)
41 a_stripped.id() == ID_object_address &&
42 b_stripped.id() == ID_object_address)
std::unordered_set< symbol_exprt, irep_hash > address_taken(const std::vector< exprt > &src)
Base class for all expressions.
The Boolean constant false.
const irep_idt & id() const
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
The Boolean constant true.
bool stack_and_not_dirty(const exprt &expr, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const namespacet &ns)
exprt strip_member_element(const exprt &src)
exprt may_be_same_object(const exprt &a, const exprt &b, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const namespacet &ns)
API to expression classes for Pointers.
const field_address_exprt & to_field_address_expr(const exprt &expr)
Cast an exprt to an field_address_exprt.
const element_address_exprt & to_element_address_expr(const exprt &expr)
Cast an exprt to an element_address_exprt.
exprt same_object(const exprt &p1, const exprt &p2)
Various predicates over pointers in programs.