Go to the documentation of this file.
62 goto_functionst::function_mapt::iterator it=
71 "body of entry point function must be available");
91 if(!i_it->is_function_call())
125 unsigned smallfunc_limit,
126 bool adjust_function)
153 unsigned smallfunc_limit,
154 bool adjust_function)
189 if(!i_it->is_function_call())
197 if(function_expr.
id()!=ID_symbol)
204 goto_functionst::function_mapt::const_iterator called_it =
243 bool adjust_function,
269 bool adjust_function,
279 goto_functionst::function_mapt::iterator f_it=
287 if(!goto_function.body_available())
299 if(!i_it->is_function_call())
305 goto_inline.goto_inline(
function, goto_function, inline_map,
true);
312 bool adjust_function,
324 goto_functionst::function_mapt::iterator f_it=
332 if(!goto_function.body_available())
345 if(!i_it->is_function_call())
351 goto_inline.goto_inline(
function, goto_function, inline_map,
true);
#define Forall_goto_program_instructions(it, program)
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
std::list< callt > call_listt
static void get_call(goto_programt::const_targett target, exprt &lhs, exprt &function, exprt::operandst &arguments)
jsont goto_function_inline_and_log(goto_modelt &goto_model, const irep_idt function, message_handlert &message_handler, bool adjust_function, bool caching)
void goto_partial_inline(goto_modelt &goto_model, message_handlert &message_handler, unsigned smallfunc_limit, bool adjust_function)
Inline all function calls to functions either marked as "inlined" or smaller than smallfunc_limit (by...
Base class for all expressions.
function_mapt function_map
Expression to hold a symbol (variable)
std::pair< goto_programt::targett, bool > callt
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
bool body_available() const
const code_typet & to_code_type(const typet &type)
Cast a typet to a code_typet.
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
#define PRECONDITION(CONDITION)
const irep_idt & get_identifier() const
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
const irep_idt & id() const
A goto function, consisting of function body (see body) and parameter identifiers (see parameter_iden...
std::vector< exprt > operandst
void goto_function_inline(goto_modelt &goto_model, const irep_idt function, message_handlert &message_handler, bool adjust_function, bool caching)
Transitively inline all function calls made from a particular function.
void compute_loop_numbers()
void clear()
Clear the goto program.
std::map< irep_idt, call_listt > inline_mapt
::goto_functiont goto_functiont
instructionst instructions
The list of instructions in the goto program.
A collection of goto functions.
goto_functionst goto_functions
GOTO functions.
A generic container class for the GOTO intermediate representation of one function.
static irep_idt entry_point()
Get the identifier of the entry point to a goto model.
symbol_tablet symbol_table
Symbol table.
void goto_inline(goto_modelt &goto_model, message_handlert &message_handler, bool adjust_function)
Inline every function call into the entry_point() function.