15
15
#include < map>
16
16
#include < unordered_set>
17
17
18
- #include < util/expr_iterator.h>
19
18
#include < util/irep.h>
20
- #include < util/range.h>
21
19
#include < util/sharing_map.h>
22
20
#include < util/simplify_expr.h>
23
21
#include < util/ssa_expr.h>
@@ -89,9 +87,6 @@ class renamedt : private underlyingt
89
87
(void )::simplify (value (), ns);
90
88
}
91
89
92
- using mutator_functiont =
93
- std::function<optionalt<renamedt>(const renamedt &)>;
94
-
95
90
private:
96
91
underlyingt &value ()
97
92
{
@@ -103,51 +98,12 @@ class renamedt : private underlyingt
103
98
friend struct symex_level2t ;
104
99
friend class goto_symex_statet ;
105
100
106
- template <levelt make_renamed_level>
107
- friend renamedt<exprt, make_renamed_level>
108
- make_renamed (constant_exprt constant);
109
-
110
- template <levelt selectively_mutate_level>
111
- friend void selectively_mutate (
112
- renamedt<exprt, selectively_mutate_level> &renamed,
113
- typename renamedt<exprt, selectively_mutate_level>::mutator_functiont
114
- get_mutated_expr);
115
-
116
101
// / Only the friend classes can create renamedt objects
117
102
explicit renamedt (underlyingt value) : underlyingt(std::move(value))
118
103
{
119
104
}
120
105
};
121
106
122
- template <levelt level>
123
- renamedt<exprt, level> make_renamed (constant_exprt constant)
124
- {
125
- return renamedt<exprt, level>(std::move (constant));
126
- }
127
-
128
- // / This permits replacing subexpressions of the renamed value, so long as
129
- // / each replacement is consistent with our current renaming level (for
130
- // / example, replacing subexpressions of L2 expressions with ones which are
131
- // / themselves L2 renamed).
132
- // / The passed function will be called with each expression node in preorder
133
- // / (i.e. parent expressions before children), and should return an empty
134
- // / optional to make no change or a renamed expression to make a change.
135
- template <levelt level>
136
- void selectively_mutate (
137
- renamedt<exprt, level> &renamed,
138
- typename renamedt<exprt, level>::mutator_functiont get_mutated_expr)
139
- {
140
- for (auto it = renamed.depth_begin (), itend = renamed.depth_end (); it != itend;
141
- ++it)
142
- {
143
- optionalt<renamedt<exprt, level>> replacement =
144
- get_mutated_expr (static_cast <const renamedt<exprt, level> &>(*it));
145
-
146
- if (replacement)
147
- it.mutate () = std::move (replacement->value ());
148
- }
149
- }
150
-
151
107
// / Functor to set the level 0 renaming of SSA expressions.
152
108
// / Level 0 corresponds to threads.
153
109
// / The renaming is built for one particular interleaving.
0 commit comments