16 const std::set<irep_idt> &alias_set)
18 if(lhs.
id()==ID_symbol)
24 for(
const auto &alias : alias_set)
33 std::set<irep_idt> &alias_set)
35 if(rhs.
id()==ID_symbol)
38 alias_set.insert(identifier);
40 for(
const auto &alias : alias_set)
42 alias_set.insert(alias);
44 else if(rhs.
id()==ID_if)
49 else if(rhs.
id()==ID_typecast)
53 else if(rhs.
id()==ID_address_of)
61 std::set<irep_idt> &alias_set)
63 if(rhs.
id()==ID_symbol)
66 alias_set.insert(
"&"+
id2string(identifier));
68 else if(rhs.
id()==ID_if)
73 else if(rhs.
id()==ID_dereference)
89 switch(instruction.
type)
147 out <<
"Aliases: " << *a_it1;
150 out <<
' ' << *a_it2;
185 if(cleanup_map.find(*it)==cleanup_map.end())
const if_exprt & to_if_expr(const exprt &expr)
Cast a generic exprt to an if_exprt.
const code_declt & to_code_decl(const codet &code)
bool merge(const global_may_alias_domaint &b, locationt from, locationt to)
const std::string & id2string(const irep_idt &d)
const irep_idt & get_identifier() const
void transform(locationt from, locationt to, ai_baset &ai, const namespacet &ns) final override
const code_deadt & to_code_dead(const codet &code)
void get_rhs_aliases_address_of(const exprt &, std::set< irep_idt > &)
goto_program_instruction_typet type
What kind of instruction?
const irep_idt & get_identifier() const
void isolate(typename numbering< T >::const_iterator it)
const address_of_exprt & to_address_of_expr(const exprt &expr)
Cast a generic exprt to an address_of_exprt.
const T & find(typename numbering< T >::const_iterator it) const
void get_rhs_aliases(const exprt &, std::set< irep_idt > &)
This class represents an instruction in the GOTO intermediate representation.
const char * to_string() const
const code_assignt & to_code_assign(const codet &code)
bool same_set(const T &a, const T &b) const
const irep_idt & id() const
A declaration of a local variable.
const irep_idt & get_identifier() const
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
numbering_typet::const_iterator const_iterator
Base class for all expressions.
bool is_root(const T &a) const
const typecast_exprt & to_typecast_expr(const exprt &expr)
Cast a generic exprt to a typecast_exprt.
void output(std::ostream &out, const ai_baset &ai, const namespacet &ns) const final override
A removal of a local variable.
goto_programt::const_targett locationt
bool make_union(const T &a, const T &b)
void assign_lhs_aliases(const exprt &, const std::set< irep_idt > &)
Field-insensitive, location-sensitive, over-approximative escape analysis.