CBMC
Loading...
Searching...
No Matches
frame.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: Symbolic Execution
4
5Author: Romain Brenguier, romain.brenguier@diffblue.com
6
7\*******************************************************************/
8
11
12#ifndef CPROVER_GOTO_SYMEX_FRAME_H
13#define CPROVER_GOTO_SYMEX_FRAME_H
14
15#include "goto_state.h"
16#include "symex_target.h"
17
19
21struct framet
22{
23 // gotos
25 std::list<std::pair<symex_targett::sourcet, goto_statet>>;
26
27 // function calls
29 std::map<
35 std::vector<irep_idt> parameter_names;
38 exprt call_lhs = nil_exprt(); // cleaned, but not renamed
39 std::optional<symbol_exprt> return_value_symbol; // not renamed
40 bool hidden_function = false;
41
43
44 std::set<irep_idt> local_objects;
45
46 // exceptions
47 std::map<irep_idt, goto_programt::targett> catch_map;
48
49 // loop and recursion unwinding
51 {
52 unsigned count = 0;
53 bool is_recursion = false;
54 };
55
57 {
58 public:
59 explicit active_loop_infot(lexical_loopst::loopt &_loop) : loop(_loop)
60 {
61 }
62
64 std::size_t children_too_complex = 0;
65
67 std::vector<std::reference_wrapper<lexical_loopst::loopt>>
69
70 // Loop information.
71 lexical_loopst::loopt &loop;
72 };
73
74 std::shared_ptr<lexical_loopst> loops_info;
75 std::vector<active_loop_infot> active_loops;
76
77 std::unordered_map<irep_idt, loop_infot> loop_iterations;
78
84};
85
86#endif // CPROVER_GOTO_SYMEX_FRAME_H
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition dstring.h:38
Base class for all expressions.
Definition expr.h:56
active_loop_infot(lexical_loopst::loopt &_loop)
Definition frame.h:59
std::size_t children_too_complex
Incremental counter on how many branches this loop has had killed.
Definition frame.h:64
lexical_loopst::loopt & loop
Definition frame.h:71
std::vector< std::reference_wrapper< lexical_loopst::loopt > > blacklisted_loops
Set of loop ID's that have been blacklisted.
Definition frame.h:68
Stack frames – these are used for function calls and for exceptions.
std::map< irep_idt, goto_programt::targett > catch_map
Definition frame.h:47
std::vector< active_loop_infot > active_loops
Definition frame.h:75
guardt guard_at_function_start
Definition frame.h:36
std::list< std::pair< symex_targett::sourcet, goto_statet > > goto_state_listt
Definition frame.h:25
std::optional< symbol_exprt > return_value_symbol
Definition frame.h:39
exprt call_lhs
Definition frame.h:38
symex_targett::sourcet calling_location
Definition frame.h:34
std::unordered_map< irep_idt, loop_infot > loop_iterations
Definition frame.h:77
bool hidden_function
Definition frame.h:40
std::vector< irep_idt > parameter_names
Definition frame.h:35
symex_level1t old_level1
Definition frame.h:42
goto_programt::const_targett end_of_function
Definition frame.h:37
std::map< goto_programt::const_targett, goto_state_listt, goto_programt::target_less_than > goto_state_map
Definition frame.h:33
std::set< irep_idt > local_objects
Definition frame.h:44
framet(symex_targett::sourcet _calling_location, const guardt &state_guard)
Definition frame.h:79
irep_idt function_identifier
Definition frame.h:28
std::shared_ptr< lexical_loopst > loops_info
Definition frame.h:74
instructionst::const_iterator const_targett
The NIL expression.
Definition std_expr.h:3208
goto_statet class definition
Compute lexical loops in a goto_function.
STL namespace.
unsigned count
Definition frame.h:52
bool is_recursion
Definition frame.h:53
A total order over targett and const_targett.
Functor to set the level 1 renaming of SSA expressions.
Identifies source in the context of symbolic execution.
Generate Equation using Symbolic Execution.