@@ -14,6 +14,7 @@ Author: Matt Lewis
14
14
15
15
#include < util/namespace.h>
16
16
#include < util/expr.h>
17
+ #include < util/message.h>
17
18
18
19
#include < analyses/natural_loops.h>
19
20
@@ -28,15 +29,18 @@ Author: Matt Lewis
28
29
29
30
class acceleratet
30
31
{
31
- public:
32
- acceleratet (goto_programt &_program,
33
- goto_modelt &_goto_model,
34
- bool _use_z3):
32
+ public:
33
+ acceleratet (
34
+ goto_programt &_program,
35
+ goto_modelt &_goto_model,
36
+ message_handlert &message_handler,
37
+ bool _use_z3)
38
+ : message_handler(message_handler),
35
39
program (_program),
36
40
goto_functions(_goto_model.goto_functions),
37
41
symbol_table(_goto_model.symbol_table),
38
42
ns(_goto_model.symbol_table),
39
- utils (symbol_table, goto_functions),
43
+ utils(symbol_table, message_handler, goto_functions),
40
44
use_z3(_use_z3)
41
45
{
42
46
natural_loops (program);
@@ -51,46 +55,54 @@ class acceleratet
51
55
52
56
static const int accelerate_limit = -1 ;
53
57
54
- protected:
55
- void find_paths (goto_programt::targett &loop_header,
56
- pathst &loop_paths,
57
- pathst &exit_paths,
58
- goto_programt::targett &back_jump);
58
+ protected:
59
+ message_handlert &message_handler;
59
60
60
- void extend_path (goto_programt::targett &t,
61
- goto_programt::targett &loop_header,
62
- natural_loops_mutablet::natural_loopt &loop,
63
- patht &prefix,
64
- pathst &loop_paths,
65
- pathst &exit_paths,
66
- goto_programt::targett &back_jump);
61
+ void find_paths (
62
+ goto_programt::targett &loop_header,
63
+ pathst &loop_paths,
64
+ pathst &exit_paths,
65
+ goto_programt::targett &back_jump);
66
+
67
+ void extend_path (
68
+ goto_programt::targett &t,
69
+ goto_programt::targett &loop_header,
70
+ natural_loops_mutablet::natural_loopt &loop,
71
+ patht &prefix,
72
+ pathst &loop_paths,
73
+ pathst &exit_paths,
74
+ goto_programt::targett &back_jump);
67
75
68
76
goto_programt::targett find_back_jump (goto_programt::targett loop_header);
69
77
70
- void insert_looping_path (goto_programt::targett &loop_header,
71
- goto_programt::targett &back_jump,
72
- goto_programt &looping_path,
73
- patht &inserted_path);
74
- void insert_accelerator (goto_programt::targett &loop_header,
75
- goto_programt::targett &back_jump,
76
- path_acceleratort &accelerator,
77
- subsumed_patht &subsumed);
78
+ void insert_looping_path (
79
+ goto_programt::targett &loop_header,
80
+ goto_programt::targett &back_jump,
81
+ goto_programt &looping_path,
82
+ patht &inserted_path);
83
+ void insert_accelerator (
84
+ goto_programt::targett &loop_header,
85
+ goto_programt::targett &back_jump,
86
+ path_acceleratort &accelerator,
87
+ subsumed_patht &subsumed);
78
88
79
89
void set_dirty_vars (path_acceleratort &accelerator);
80
90
void add_dirty_checks ();
81
91
bool is_underapproximate (path_acceleratort &accelerator);
82
92
83
- void make_overflow_loc (goto_programt::targett loop_header,
84
- goto_programt::targett &loop_end,
85
- goto_programt::targett &overflow_loc);
93
+ void make_overflow_loc (
94
+ goto_programt::targett loop_header,
95
+ goto_programt::targett &loop_end,
96
+ goto_programt::targett &overflow_loc);
86
97
87
98
void insert_automaton (trace_automatont &automaton);
88
- void build_state_machine (trace_automatont::sym_mapt::iterator p,
89
- trace_automatont::sym_mapt::iterator end,
90
- state_sett &accept_states,
91
- symbol_exprt state,
92
- symbol_exprt next_state,
93
- scratch_programt &state_machine);
99
+ void build_state_machine (
100
+ trace_automatont::sym_mapt::iterator p,
101
+ trace_automatont::sym_mapt::iterator end,
102
+ state_sett &accept_states,
103
+ symbol_exprt state,
104
+ symbol_exprt next_state,
105
+ scratch_programt &state_machine);
94
106
95
107
symbolt make_symbol (std::string name, typet type);
96
108
void decl (symbol_exprt &sym, goto_programt::targett t);
@@ -117,6 +129,7 @@ class acceleratet
117
129
118
130
void accelerate_functions (
119
131
goto_modelt &,
132
+ message_handlert &message_handler,
120
133
bool use_z3);
121
134
122
135
#endif // CPROVER_GOTO_INSTRUMENT_ACCELERATE_ACCELERATE_H
0 commit comments