22 if(
lhs.
id()==ID_symbol)
24 else if(
lhs.
id()==ID_dereference)
27 for(modifiest::const_iterator m_it=m.begin();
28 m_it!=m.end(); m_it++)
31 else if(
lhs.
id()==ID_member)
34 else if(
lhs.
id()==ID_index)
37 else if(
lhs.
id()==ID_if)
50 const goto_programt::instructiont &instruction=*i_it;
52 if(instruction.is_assign())
57 else if(instruction.is_function_call())
68 code_function_call.
function(), modifies);
73 const exprt &
function,
76 if(
function.
id()==ID_symbol)
80 function_mapt::const_iterator fm_it=
86 modifies.insert(fm_it->second.begin(), fm_it->second.end());
90 goto_functionst::function_mapt::const_iterator
103 else if(
function.
id()==ID_if)
std::set< exprt > modifiest
const irep_idt & get_identifier() const
const dereference_exprt & to_dereference_expr(const exprt &expr)
Cast a generic exprt to a dereference_exprt.
const code_assignt & to_code_assign(const codet &code)
const irep_idt & id() const
instructionst::const_iterator const_targett
const if_exprt & to_if_expr(const exprt &expr)
Cast a generic exprt to an if_exprt.
void get_modifies_lhs(const local_may_aliast &, const goto_programt::const_targett, const exprt &lhs, modifiest &)
API to expression classes.
function_mapt function_map
A specialization of goto_program_templatet over goto programs in which instructions have codet type...
Base class for all expressions.
const goto_functionst & goto_functions
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
function_mapt function_map
void get_modifies(const local_may_aliast &local_may_alias, const goto_programt::const_targett, modifiest &)
#define forall_goto_program_instructions(it, program)
void get_modifies_function(const exprt &, modifiest &)
std::set< exprt > get(const goto_programt::const_targett t, const exprt &src) const
const code_function_callt & to_code_function_call(const codet &code)