cprover
|
#include <goto_convert_functions.h>
Public Member Functions | |
void | goto_convert (goto_functionst &functions) |
void | convert_function (const irep_idt &identifier, goto_functionst::goto_functiont &result) |
goto_convert_functionst (symbol_table_baset &_symbol_table, message_handlert &_message_handler) | |
virtual | ~goto_convert_functionst () |
![]() | |
void | goto_convert (const codet &code, goto_programt &dest, const irep_idt &mode) |
goto_convertt (symbol_table_baset &_symbol_table, message_handlert &_message_handler) | |
virtual | ~goto_convertt () |
Protected Member Functions | |
void | add_return (goto_functionst::goto_functiont &, const source_locationt &) |
![]() | |
void | goto_convert_rec (const codet &code, goto_programt &dest, const irep_idt &mode) |
symbolt & | new_tmp_symbol (const typet &type, const std::string &suffix, goto_programt &dest, const source_locationt &, const irep_idt &mode) |
symbol_exprt | make_compound_literal (const exprt &expr, goto_programt &dest, const irep_idt &mode) |
void | clean_expr (exprt &expr, goto_programt &dest, const irep_idt &mode, bool result_is_used=true) |
void | clean_expr_address_of (exprt &expr, goto_programt &dest, const irep_idt &mode) |
void | make_temp_symbol (exprt &expr, const std::string &suffix, goto_programt &, const irep_idt &mode) |
void | rewrite_boolean (exprt &dest) |
re-write boolean operators into ?: More... | |
void | remove_side_effect (side_effect_exprt &expr, goto_programt &dest, const irep_idt &mode, bool result_is_used) |
void | remove_assignment (side_effect_exprt &expr, goto_programt &dest, bool result_is_used, const irep_idt &mode) |
void | remove_pre (side_effect_exprt &expr, goto_programt &dest, bool result_is_used, const irep_idt &mode) |
void | remove_post (side_effect_exprt &expr, goto_programt &dest, const irep_idt &mode, bool result_is_used) |
void | remove_function_call (side_effect_exprt &expr, goto_programt &dest, const irep_idt &mode, bool result_is_used) |
void | remove_cpp_new (side_effect_exprt &expr, goto_programt &dest, bool result_is_used) |
void | remove_cpp_delete (side_effect_exprt &expr, goto_programt &dest, bool result_is_used) |
void | remove_malloc (side_effect_exprt &expr, goto_programt &dest, const irep_idt &mode, bool result_is_used) |
void | remove_temporary_object (side_effect_exprt &expr, goto_programt &dest, bool result_is_used) |
void | remove_statement_expression (side_effect_exprt &expr, goto_programt &dest, const irep_idt &mode, bool result_is_used) |
void | remove_gcc_conditional_expression (exprt &expr, goto_programt &dest, const irep_idt &mode) |
virtual void | do_cpp_new (const exprt &lhs, const side_effect_exprt &rhs, goto_programt &dest) |
void | do_java_new (const exprt &lhs, const side_effect_exprt &rhs, goto_programt &dest) |
void | do_java_new_array (const exprt &lhs, const side_effect_exprt &rhs, goto_programt &dest) |
void | cpp_new_initializer (const exprt &lhs, const side_effect_exprt &rhs, goto_programt &dest) |
builds a goto program for object initialization after new More... | |
virtual void | do_function_call (const exprt &lhs, const exprt &function, const exprt::operandst &arguments, goto_programt &dest, const irep_idt &mode) |
virtual void | do_function_call_if (const exprt &lhs, const if_exprt &function, const exprt::operandst &arguments, goto_programt &dest, const irep_idt &mode) |
virtual void | do_function_call_symbol (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
add function calls to function queue for later processing More... | |
virtual void | do_function_call_symbol (const symbolt &symbol) |
virtual void | do_function_call_other (const exprt &lhs, const exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | convert_block (const code_blockt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_decl (const code_declt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_decl_type (const codet &code, goto_programt &dest) |
void | convert_expression (const code_expressiont &code, goto_programt &dest, const irep_idt &mode) |
void | convert_assign (const code_assignt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_cpp_delete (const codet &code, goto_programt &dest) |
void | convert_loop_invariant (const codet &code, goto_programt::targett loop, const irep_idt &mode) |
void | convert_for (const code_fort &code, goto_programt &dest, const irep_idt &mode) |
void | convert_while (const code_whilet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_dowhile (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_assume (const code_assumet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_assert (const code_assertt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_switch (const code_switcht &code, goto_programt &dest, const irep_idt &mode) |
void | convert_break (const code_breakt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_return (const code_returnt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_continue (const code_continuet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_ifthenelse (const code_ifthenelset &code, goto_programt &dest, const irep_idt &mode) |
void | convert_init (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_goto (const code_gotot &code, goto_programt &dest) |
void | convert_gcc_computed_goto (const codet &code, goto_programt &dest) |
void | convert_skip (const codet &code, goto_programt &dest) |
void | convert_label (const code_labelt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_gcc_local_label (const codet &code, goto_programt &dest) |
void | convert_switch_case (const code_switch_caset &code, goto_programt &dest, const irep_idt &mode) |
void | convert_gcc_switch_case_range (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_function_call (const code_function_callt &code, goto_programt &dest, const irep_idt &mode) |
void | convert_start_thread (const codet &code, goto_programt &dest) |
void | convert_end_thread (const codet &code, goto_programt &dest) |
void | convert_atomic_begin (const codet &code, goto_programt &dest) |
void | convert_atomic_end (const codet &code, goto_programt &dest) |
void | convert_msc_try_finally (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_msc_try_except (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_msc_leave (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_try_catch (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_CPROVER_try_catch (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_CPROVER_try_finally (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_CPROVER_throw (const codet &code, goto_programt &dest, const irep_idt &mode) |
void | convert_asm (const code_asmt &code, goto_programt &dest) |
void | convert (const codet &code, goto_programt &dest, const irep_idt &mode) |
converts 'code' and appends the result to 'dest' More... | |
void | copy (const codet &code, goto_program_instruction_typet type, goto_programt &dest) |
symbol_exprt | exception_flag () |
void | unwind_destructor_stack (const source_locationt &, std::size_t stack_size, goto_programt &dest, const irep_idt &mode) |
void | unwind_destructor_stack (const source_locationt &, std::size_t stack_size, goto_programt &dest, destructor_stackt &stack, const irep_idt &mode) |
void | finish_gotos (goto_programt &dest, const irep_idt &mode) |
void | finish_computed_gotos (goto_programt &dest) |
void | optimize_guarded_gotos (goto_programt &dest) |
Rewrite "if(x) goto z; goto y; z:" into "if(!x) goto y;" This only works if the "goto y" is not a branch target. More... | |
exprt | case_guard (const exprt &value, const caset &case_op) |
void | generate_ifthenelse (const exprt &cond, goto_programt &true_case, goto_programt &false_case, const source_locationt &, goto_programt &dest, const irep_idt &mode) |
if(guard) true_case; else false_case; More... | |
void | generate_conditional_branch (const exprt &guard, goto_programt::targett target_true, goto_programt::targett target_false, const source_locationt &, goto_programt &dest, const irep_idt &mode) |
if(guard) goto target_true; else goto target_false; More... | |
void | generate_conditional_branch (const exprt &guard, goto_programt::targett target_true, const source_locationt &, goto_programt &dest, const irep_idt &mode) |
void | generate_thread_block (const code_blockt &thread_body, goto_programt &dest, const irep_idt &mode) |
Generates the necessary goto-instructions to represent a thread-block. More... | |
irep_idt | get_string_constant (const exprt &expr) |
bool | get_string_constant (const exprt &expr, irep_idt &) |
exprt | get_constant (const exprt &expr) |
void | do_atomic_begin (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_atomic_end (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_create_thread (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_array_equal (const exprt &lhs, const symbol_exprt &rhs, const exprt::operandst &arguments, goto_programt &dest) |
void | do_array_op (const irep_idt &id, const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_printf (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_scanf (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_input (const exprt &lhs, const exprt &rhs, const exprt::operandst &arguments, goto_programt &dest) |
void | do_output (const exprt &lhs, const exprt &rhs, const exprt::operandst &arguments, goto_programt &dest) |
void | do_prob_coin (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
void | do_prob_uniform (const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest) |
exprt | get_array_argument (const exprt &src) |
Static Protected Member Functions | |
static bool | hide (const goto_programt &) |
![]() | |
static bool | needs_cleaning (const exprt &expr) |
static bool | has_sideeffect (const exprt &expr) |
static bool | has_function_call (const exprt &expr) |
static void | replace_new_object (const exprt &object, exprt &dest) |
static void | collect_operands (const exprt &expr, const irep_idt &id, std::list< exprt > &dest) |
Additional Inherited Members | |
![]() | |
typedef std::vector< codet > | destructor_stackt |
typedef std::map< irep_idt, std::pair< goto_programt::targett, destructor_stackt > > | labelst |
typedef std::list< std::pair< goto_programt::targett, destructor_stackt > > | gotost |
typedef std::list< goto_programt::targett > | computed_gotost |
typedef exprt::operandst | caset |
typedef std::list< std::pair< goto_programt::targett, caset > > | casest |
typedef std::map< goto_programt::targett, casest::iterator > | cases_mapt |
![]() | |
symbol_table_baset & | symbol_table |
namespacet | ns |
std::string | tmp_symbol_prefix |
struct goto_convertt::targetst | targets |
Definition at line 39 of file goto_convert_functions.h.
goto_convert_functionst::goto_convert_functionst | ( | symbol_table_baset & | _symbol_table, |
message_handlert & | _message_handler | ||
) |
Definition at line 23 of file goto_convert_functions.cpp.
|
virtual |
Definition at line 30 of file goto_convert_functions.cpp.
|
protected |
Definition at line 86 of file goto_convert_functions.cpp.
Referenced by convert_function().
void goto_convert_functionst::convert_function | ( | const irep_idt & | identifier, |
goto_functionst::goto_functiont & | result | ||
) |
Definition at line 139 of file goto_convert_functions.cpp.
References goto_programt::add_instruction(), add_return(), END_FUNCTION, code_blockt::end_location(), messaget::eom(), messaget::error(), exprt::find_source_location(), Forall_goto_program_instructions, codet::get_statement(), goto_convertt::goto_convert_rec(), has_prefix(), goto_convertt::targetst::has_return_value, hide(), irept::id(), id2string(), irept::is_nil(), namespacet::lookup(), goto_programt::instructiont::make_atomic_begin(), irept::make_nil(), symbolt::mode, symbolt::name, goto_convertt::ns, irept::set(), goto_convertt::targetst::set_return(), goto_programt::instructiont::source_location, messaget::mstreamt::source_location, goto_convertt::targets, goto_convertt::tmp_symbol_prefix, to_code(), to_code_block(), to_code_type(), symbolt::type, and symbolt::value.
Referenced by compilet::convert_symbols(), lazy_goto_functions_mapt::ensure_entry_converted(), jbmc_parse_optionst::generate_function_body(), goto_convert(), and goto_convert().
void goto_convert_functionst::goto_convert | ( | goto_functionst & | functions | ) |
Definition at line 34 of file goto_convert_functions.cpp.
References goto_functionst::compute_location_numbers(), convert_function(), goto_functionst::function_map, goto_convertt::symbol_table, and symbol_table_baset::symbols.
Referenced by goto_convert().
|
staticprotected |
Definition at line 74 of file goto_convert_functions.cpp.
References forall_goto_program_instructions, and goto_program.
Referenced by convert_function().