@@ -14,6 +14,7 @@ Author: Matt Lewis
1414
1515#include < util/namespace.h>
1616#include < util/expr.h>
17+ #include < util/message.h>
1718
1819#include < analyses/natural_loops.h>
1920
@@ -28,15 +29,18 @@ Author: Matt Lewis
2829
2930class acceleratet
3031{
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),
3539 program (_program),
3640 goto_functions(_goto_model.goto_functions),
3741 symbol_table(_goto_model.symbol_table),
3842 ns(_goto_model.symbol_table),
39- utils (symbol_table, goto_functions),
43+ utils(symbol_table, message_handler, goto_functions),
4044 use_z3(_use_z3)
4145 {
4246 natural_loops (program);
@@ -51,46 +55,54 @@ class acceleratet
5155
5256 static const int accelerate_limit = -1 ;
5357
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;
5960
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);
6775
6876 goto_programt::targett find_back_jump (goto_programt::targett loop_header);
6977
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);
7888
7989 void set_dirty_vars (path_acceleratort &accelerator);
8090 void add_dirty_checks ();
8191 bool is_underapproximate (path_acceleratort &accelerator);
8292
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);
8697
8798 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);
94106
95107 symbolt make_symbol (std::string name, typet type);
96108 void decl (symbol_exprt &sym, goto_programt::targett t);
@@ -117,6 +129,7 @@ class acceleratet
117129
118130void accelerate_functions (
119131 goto_modelt &,
132+ message_handlert &message_handler,
120133 bool use_z3);
121134
122135#endif // CPROVER_GOTO_INSTRUMENT_ACCELERATE_ACCELERATE_H
0 commit comments