cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
overflow_instrumenter.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Loop Acceleration
4
5
Author: Matt Lewis
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_GOTO_INSTRUMENT_ACCELERATE_OVERFLOW_INSTRUMENTER_H
13
#define CPROVER_GOTO_INSTRUMENT_ACCELERATE_OVERFLOW_INSTRUMENTER_H
14
15
#include <
util/namespace.h
>
16
17
#include <
goto-programs/goto_program.h
>
18
19
#include <set>
20
21
#include "
cone_of_influence.h
"
22
23
class
overflow_instrumentert
24
{
25
public
:
26
overflow_instrumentert
(
27
goto_programt
&_program,
28
const
exprt
&_overflow_var,
29
symbol_table_baset
&_symbol_table)
30
:
program
(_program),
31
symbol_table
(_symbol_table),
32
overflow_var
(_overflow_var),
33
ns
(
symbol_table
)
34
{
35
}
36
37
void
add_overflow_checks
();
38
void
add_overflow_checks
(
goto_programt::targett
t);
39
void
40
add_overflow_checks
(
goto_programt::targett
t,
goto_programt::targetst
&added);
41
42
void
overflow_expr
(
const
exprt
&expr,
expr_sett
&cases);
43
void
overflow_expr
(
const
exprt
&expr,
exprt
&overflow);
44
45
protected
:
46
void
add_overflow_checks
(
47
goto_programt::targett
t,
48
const
exprt
&expr,
49
goto_programt::targetst
&added);
50
51
void
accumulate_overflow
(
52
goto_programt::targett
t,
53
const
exprt
&expr,
54
goto_programt::targetst
&added);
55
56
void
fix_types
(
binary_exprt
&overflow);
57
58
goto_programt
&
program
;
59
symbol_table_baset
&
symbol_table
;
60
const
exprt
&
overflow_var
;
61
62
namespacet
ns
;
63
std::set<unsigned>
checked
;
64
};
65
66
#endif
// CPROVER_GOTO_INSTRUMENT_ACCELERATE_OVERFLOW_INSTRUMENTER_H
binary_exprt
A base class for binary expressions.
Definition
std_expr.h:639
exprt
Base class for all expressions.
Definition
expr.h:57
goto_programt
A generic container class for the GOTO intermediate representation of one function.
Definition
goto_program.h:72
goto_programt::targett
instructionst::iterator targett
Definition
goto_program.h:613
goto_programt::targetst
std::list< targett > targetst
Definition
goto_program.h:615
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
overflow_instrumentert::add_overflow_checks
void add_overflow_checks()
Definition
overflow_instrumenter.cpp:26
overflow_instrumentert::overflow_instrumentert
overflow_instrumentert(goto_programt &_program, const exprt &_overflow_var, symbol_table_baset &_symbol_table)
Definition
overflow_instrumenter.h:26
overflow_instrumentert::ns
namespacet ns
Definition
overflow_instrumenter.h:62
overflow_instrumentert::checked
std::set< unsigned > checked
Definition
overflow_instrumenter.h:63
overflow_instrumentert::symbol_table
symbol_table_baset & symbol_table
Definition
overflow_instrumenter.h:59
overflow_instrumentert::fix_types
void fix_types(binary_exprt &overflow)
Definition
overflow_instrumenter.cpp:255
overflow_instrumentert::accumulate_overflow
void accumulate_overflow(goto_programt::targett t, const exprt &expr, goto_programt::targetst &added)
Definition
overflow_instrumenter.cpp:272
overflow_instrumentert::program
goto_programt & program
Definition
overflow_instrumenter.h:58
overflow_instrumentert::overflow_var
const exprt & overflow_var
Definition
overflow_instrumenter.h:60
overflow_instrumentert::overflow_expr
void overflow_expr(const exprt &expr, expr_sett &cases)
Definition
overflow_instrumenter.cpp:88
symbol_table_baset
The symbol table base class interface.
Definition
symbol_table_base.h:23
cone_of_influence.h
Loop Acceleration.
expr_sett
std::unordered_set< exprt, irep_hash > expr_sett
Definition
cone_of_influence.h:21
goto_program.h
Concrete Goto Program.
namespace.h
goto-instrument
accelerate
overflow_instrumenter.h
Generated by
1.17.0