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);
371 bool adjust_function,
375 goto_functions, ns, message_handler, adjust_function, caching);
382 if(!i_it->is_function_call())
388 goto_inline.goto_inline(call_list, goto_program,
true);
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
std::vector< exprt > operandst
A collection of goto functions.
void compute_loop_numbers()
function_mapt function_map
::goto_functiont goto_functiont
static irep_idt entry_point()
Get the identifier of the entry point to a goto model.
A goto function, consisting of function body (see body) and parameter identifiers (see parameter_iden...
bool body_available() const
std::list< callt > call_listt
static void get_call(goto_programt::const_targett target, exprt &lhs, exprt &function, exprt::operandst &arguments)
std::pair< goto_programt::targett, bool > callt
std::map< irep_idt, call_listt > inline_mapt
symbol_tablet symbol_table
Symbol table.
goto_functionst goto_functions
GOTO functions.
A generic container class for the GOTO intermediate representation of one function.
instructionst instructions
The list of instructions in the goto program.
void clear()
Clear the goto program.
const irep_idt & id() const
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().
Expression to hold a symbol (variable)
const irep_idt & get_identifier() const
void goto_program_inline(goto_functionst &goto_functions, goto_programt &goto_program, const namespacet &ns, message_handlert &message_handler, bool adjust_function, bool caching)
Transitively inline all function calls found in a particular program.
void goto_inline(goto_modelt &goto_model, message_handlert &message_handler, bool adjust_function)
Inline every function call into the entry_point() function.
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 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...
jsont goto_function_inline_and_log(goto_modelt &goto_model, const irep_idt function, message_handlert &message_handler, bool adjust_function, bool caching)
Function Inlining This gives a number of different interfaces to the function inlining functionality ...
Function Inlining This is a class that encapsulates the state and functionality needed to do inline m...
#define Forall_goto_program_instructions(it, program)
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
#define PRECONDITION(CONDITION)
API to expression classes.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
const code_typet & to_code_type(const typet &type)
Cast a typet to a code_typet.