84 shared_varst::const_iterator v_it =
shared_vars.find(s.get_identifier());
95 replace_symbol.
insert(s, new_expr);
103 for(goto_programt::instructionst::iterator
112 else if(it->is_assume() || it->is_assert() || it->is_goto())
116 else if(it->is_function_call())
144 thread_local_var.
type = symbol.
type;
163 if(is_threaded(i_it))
181 collect(gf_entry.second.body, is_threaded);
goto_instruction_codet representation of a function call statement.
std::optional< symbol_exprt > array_symbol
std::optional< symbol_exprt > w_index_symbol
std::optional< symbol_exprt > array_symbol
void collect(const goto_programt &goto_program, const is_threadedt &is_threaded)
void operator()(goto_functionst &goto_functions)
concurrency_instrumentationt(value_setst &_value_sets, symbol_tablet &_symbol_table)
std::map< irep_idt, thread_local_vart > thread_local_varst
thread_local_varst thread_local_vars
void instrument(goto_functionst &goto_functions)
symbol_tablet & symbol_table
std::map< irep_idt, shared_vart > shared_varst
Base class for all expressions.
A collection of goto functions.
function_mapt function_map
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.
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().
Replace a symbol expression by a given expression.
void insert(const class symbol_exprt &old_expr, const exprt &new_expr)
Sets old_expr to be replaced by new_expr if we don't already have a replacement; otherwise does nothi...
Expression to hold a symbol (variable)
typet type
Type of symbol.
The type of an expression, extends irept.
void concurrency(value_setst &value_sets, goto_modelt &goto_model)
Encoding for Threaded Goto Programs.
static bool find_symbols(symbol_kindt, const typet &, std::function< bool(const symbol_exprt &)>, std::unordered_set< irep_idt > &bindings, const std::vector< irep_idt > &subs_to_find)
Find identifiers with id ID_symbol of the sub expressions and the subs with ID in subs_to_find consid...
find_symbols_sett find_symbol_identifiers(const exprt &src)
Find identifiers of the sub expressions with id ID_symbol, considering both free and bound variables.
const code_function_callt & to_code_function_call(const goto_instruction_codet &code)
#define forall_goto_program_instructions(it, program)
Over-approximate Concurrency for Threaded Goto Programs.
API to expression classes.