19 std::set<irep_idt> &address_taken)
24 if(src.
id()==ID_address_of &&
25 src.
type().
id()==ID_pointer &&
30 if(op.id()==ID_symbol)
38 std::set<irep_idt> &address_taken)
43 if(src.
type().
id()==ID_code &&
51 std::set<irep_idt> &address_taken)
63 std::set<irep_idt> &address_taken)
72 std::set<irep_idt> &functions)
74 std::set<irep_idt> working_queue;
75 std::set<irep_idt> done;
80 while(!working_queue.empty())
83 working_queue.erase(working_queue.begin());
85 if(done.find(
id)!=done.end())
91 const goto_functionst::function_mapt::const_iterator f_it=
104 if(i_it->is_function_call())
117 std::set<irep_idt> &functions)
void compute_address_taken_functions(const exprt &src, std::set< irep_idt > &address_taken)
get all functions whose address is taken
void compute_functions(const exprt &src, std::set< irep_idt > &address_taken)
get all functions in the expression
const irep_idt & id() const
static irep_idt entry_point()
API to expression classes.
#define forall_operands(it, expr)
function_mapt function_map
A specialization of goto_program_templatet over goto programs in which instructions have codet type...
void compute_called_functions(const goto_functionst &goto_functions, std::set< irep_idt > &functions)
computes the functions that are (potentially) called
Base class for all expressions.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
const typet & subtype() const
#define forall_goto_functions(it, functions)
#define forall_goto_program_instructions(it, program)
goto_functionst goto_functions
const irep_idt & get_identifier() const
const code_function_callt & to_code_function_call(const codet &code)