cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
cover_instrument_location.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Coverage Instrumentation
4
5
Author: Daniel Kroening
6
7
\*******************************************************************/
8
11
12
#include "
cover_instrument.h
"
13
14
#include "
cover_basic_blocks.h
"
15
#include "
cover_filter.h
"
16
17
void
cover_location_instrumentert::instrument
(
18
const
irep_idt
&function_id,
19
goto_programt
&goto_program,
20
goto_programt::targett
&i_it,
21
const
cover_blocks_baset
&basic_blocks,
22
const
assertion_factoryt
&make_assertion)
const
23
{
24
if
(
is_non_cover_assertion
(i_it))
25
i_it->turn_into_skip();
26
27
const
std::size_t block_nr = basic_blocks.
block_of
(i_it);
28
const
auto
representative_instruction = basic_blocks.
instruction_of
(block_nr);
29
// we only instrument the selected instruction
30
if
(representative_instruction && *representative_instruction == i_it)
31
{
32
const
std::string b = std::to_string(block_nr + 1);
// start with 1
33
const
std::string
id
=
id2string
(function_id) +
"#"
+ b;
34
source_locationt
source_location =
35
basic_blocks.
source_location_of
(block_nr);
36
37
// filter goals
38
if
(
goal_filters
(source_location))
39
{
40
const
auto
&source_lines = basic_blocks.
source_lines_of
(block_nr);
41
const
std::string
comment
=
42
"block "
+ b +
" (lines "
+ source_lines.to_string() +
")"
;
43
source_location.
set_basic_block_source_lines
(source_lines.to_irep());
44
goto_program.
insert_before_swap
(i_it);
45
initialize_source_location
(source_location,
comment
, function_id);
46
*i_it = make_assertion(
false_exprt
(), source_location);
47
i_it++;
48
}
49
}
50
}
cover_blocks_baset
Definition
cover_basic_blocks.h:22
cover_blocks_baset::source_lines_of
virtual const source_linest & source_lines_of(std::size_t block_nr) const =0
cover_blocks_baset::instruction_of
virtual std::optional< goto_programt::const_targett > instruction_of(std::size_t block_nr) const =0
cover_blocks_baset::source_location_of
virtual const source_locationt & source_location_of(std::size_t block_nr) const =0
cover_blocks_baset::block_of
virtual std::size_t block_of(goto_programt::const_targett t) const =0
cover_instrumenter_baset::goal_filters
const goal_filterst & goal_filters
Definition
cover_instrument.h:73
cover_instrumenter_baset::is_non_cover_assertion
bool is_non_cover_assertion(goto_programt::const_targett t) const
Definition
cover_instrument.h:94
cover_instrumenter_baset::initialize_source_location
void initialize_source_location(source_locationt &source_location, const std::string &comment, const irep_idt &function_id) const
Definition
cover_instrument.h:83
cover_instrumenter_baset::assertion_factoryt
std::function< goto_programt::instructiont(const exprt &, const source_locationt &)> assertion_factoryt
The type of function used to make goto_program assertions.
Definition
cover_instrument.h:41
cover_location_instrumentert::instrument
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.
Definition
cover_instrument_location.cpp:17
false_exprt
The Boolean constant false.
Definition
std_expr.h:3125
goto_programt
A generic container class for the GOTO intermediate representation of one function.
Definition
goto_program.h:72
goto_programt::insert_before_swap
void insert_before_swap(targett target)
Insertion that preserves jumps to "target".
Definition
goto_program.h:642
goto_programt::targett
instructionst::iterator targett
Definition
goto_program.h:613
source_locationt
Definition
source_location.h:20
source_locationt::set_basic_block_source_lines
void set_basic_block_source_lines(irept source_lines)
Definition
source_location.h:172
cover_basic_blocks.h
Basic blocks detection for Coverage Instrumentation.
cover_filter.h
Filters for the Coverage Instrumentation.
cover_instrument.h
Coverage Instrumentation.
id2string
const std::string & id2string(const irep_idt &d)
Definition
irep.h:44
comment
static std::string comment(const rw_set_baset::entryt &entry, bool write)
Definition
race_check.cpp:108
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
goto-instrument
cover_instrument_location.cpp
Generated by
1.17.0