CBMC
all_paths_enumerator.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_ALL_PATHS_ENUMERATOR_H
13 #define CPROVER_GOTO_INSTRUMENT_ACCELERATE_ALL_PATHS_ENUMERATOR_H
14 
16 
17 #include <analyses/natural_loops.h>
18 
19 #include "path.h"
20 #include "path_enumerator.h"
21 
23 {
24 public:
26  goto_programt &_goto_program,
28  goto_programt::targett _loop_header):
29  goto_program(_goto_program),
30  loop(_loop),
31  loop_header(_loop_header)
32  {
33  }
34 
35  virtual bool next(patht &path);
36 
37 protected:
38  int backtrack(patht &path);
39  void complete_path(patht &path, int succ);
40  void extend_path(patht &path, goto_programt::targett t, int succ);
41  bool is_looping(patht &path);
42 
46 
48 };
49 
50 #endif // CPROVER_GOTO_INSTRUMENT_ACCELERATE_ALL_PATHS_ENUMERATOR_H
all_paths_enumeratort(goto_programt &_goto_program, natural_loops_mutablet::natural_loopt &_loop, goto_programt::targett _loop_header)
natural_loops_mutablet::natural_loopt & loop
virtual bool next(patht &path)
void complete_path(patht &path, int succ)
goto_programt::targett loop_header
goto_programt & goto_program
void extend_path(patht &path, goto_programt::targett t, int succ)
A generic container class for the GOTO intermediate representation of one function.
Definition: goto_program.h:73
instructionst::iterator targett
Definition: goto_program.h:614
A loop, specified as a set of instructions.
Definition: loop_analysis.h:24
Concrete Goto Program.
Compute natural loops in a goto_function.
Loop Acceleration.
std::list< path_nodet > patht
Definition: path.h:44
Loop Acceleration.