|
5 | 5 | #ifndef CPROVER_GOTO_SYMEX_PATH_STORAGE_H
|
6 | 6 | #define CPROVER_GOTO_SYMEX_PATH_STORAGE_H
|
7 | 7 |
|
8 |
| -#include "goto_symex_state.h" |
9 |
| -#include "symex_target_equation.h" |
10 |
| - |
11 |
| -#include <util/options.h> |
12 | 8 | #include <util/cmdline.h>
|
13 |
| -#include <util/ui_message.h> |
14 | 9 | #include <util/invariant.h>
|
| 10 | +#include <util/message.h> |
| 11 | +#include <util/options.h> |
| 12 | + |
| 13 | +#include <analyses/local_safe_pointers.h> |
15 | 14 |
|
16 | 15 | #include <memory>
|
17 | 16 |
|
| 17 | +#include "goto_symex_state.h" |
| 18 | +#include "symex_target_equation.h" |
| 19 | + |
18 | 20 | /// Functor generating fresh nondet symbols
|
19 | 21 | class symex_nondet_generatort
|
20 | 22 | {
|
@@ -90,6 +92,12 @@ class path_storaget
|
90 | 92 | /// Counter for nondet objects, which require unique names
|
91 | 93 | symex_nondet_generatort build_symex_nondet;
|
92 | 94 |
|
| 95 | + /// Map function identifiers to \ref local_safe_pointerst instances. This is |
| 96 | + /// to identify derferences that are guaranteed to be safe in a given |
| 97 | + /// execution context, thus helping to avoid symex to follow spurious |
| 98 | + /// error-handling paths. |
| 99 | + std::unordered_map<irep_idt, local_safe_pointerst> safe_pointers; |
| 100 | + |
93 | 101 | private:
|
94 | 102 | // Derived classes should override these methods, allowing the base class to
|
95 | 103 | // enforce preconditions.
|
|
0 commit comments