28 i_it->turn_into_skip();
45 i_it->source_location_nonconst(),
46 id2string(i_it->source_location().get_comment()),
59 if(i_it->is_function_call())
61 const auto &
function = i_it->call_function();
63 function.
id() == ID_symbol &&
65 i_it->call_arguments().size() == 1)
67 const exprt c = i_it->call_arguments()[0];
71 i_it->source_location_nonconst(),
comment, function_id);
75 i_it->turn_into_skip();
83 const auto last_function_call = std::find_if(
87 return instruction.is_function_call();
91 "Goto program should have at least one function call");
93 last_function_call != goto_program.
instructions.rbegin(),
94 "Goto program shouldn't end with a function call");
95 const auto if_it = last_function_call.base();
96 const auto location = if_it->source_location();
98 "additional goal to ensure reachability of end of function";
104 *if_it = make_assertion(
false_exprt(), annotated_location);
void instrument(const irep_idt &function_id, goto_programt &, goto_programt::targett &, const cover_blocks_baset &, const assertion_factoryt &) const override
Override this method to implement an instrumenter.
void instrument(const irep_idt &function_id, goto_programt &, goto_programt::targett &, const cover_blocks_baset &, const assertion_factoryt &) const override
Override this method to implement an instrumenter.
bool is_non_cover_assertion(goto_programt::const_targett t) const
void initialize_source_location(source_locationt &source_location, const std::string &comment, const irep_idt &function_id) const
std::function< goto_programt::instructiont(const exprt &, const source_locationt &)> assertion_factoryt
The type of function used to make goto_program assertions.
void instrument(const irep_idt &function_id, goto_programt &, goto_programt::targett &, const cover_blocks_baset &, const assertion_factoryt &) const override
Override this method to implement an instrumenter.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
const source_locationt & source_location() const
The Boolean constant false.
This class represents an instruction in the GOTO intermediate representation.
A generic container class for the GOTO intermediate representation of one function.
instructionst instructions
The list of instructions in the goto program.
void insert_before_swap(targett target)
Insertion that preserves jumps to "target".
instructionst::iterator targett
void set_comment(const irep_idt &comment)
void set_property_class(const irep_idt &property_class)
void set_function(const irep_idt &function)
Coverage Instrumentation.
void cover_instrument_end_of_function(const irep_idt &function_id, goto_programt &goto_program, const cover_instrumenter_baset::assertion_factoryt &make_assertion)
const std::string & id2string(const irep_idt &d)
std::string from_expr(const namespacet &ns, const irep_idt &identifier, const exprt &expr)
static std::string comment(const rw_set_baset::entryt &entry, bool write)
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.