@@ -128,7 +128,7 @@ void goto_symext::process_array_expr(statet &state, exprt &expr)
128
128
ns, state.symbol_table , symex_dereference_state, language_mode, false );
129
129
130
130
expr = dereference.dereference (expr);
131
- lift_lets (state, expr, symex_targett::assignment_typet::STATE );
131
+ lift_lets (state, expr);
132
132
133
133
::process_array_expr (expr, symex_config.simplify_opt, ns);
134
134
}
@@ -171,10 +171,7 @@ replace_nondet(exprt &expr, symex_nondet_generatort &build_symex_nondet)
171
171
}
172
172
}
173
173
174
- void goto_symext::lift_let (
175
- statet &state,
176
- const let_exprt &let_expr,
177
- assignment_typet assignment_type)
174
+ void goto_symext::lift_let (statet &state, const let_exprt &let_expr)
178
175
{
179
176
exprt let_value = let_expr.value ();
180
177
clean_expr (let_value, state, false );
@@ -188,11 +185,10 @@ void goto_symext::lift_let(
188
185
nil_exprt (),
189
186
let_value,
190
187
value_assignment_guard,
191
- assignment_type );
188
+ symex_targett::assignment_typet::HIDDEN );
192
189
}
193
190
194
- void goto_symext::lift_lets (
195
- statet &state, exprt &rhs, assignment_typet assignment_type)
191
+ symex_live_let_variablest goto_symext::lift_lets (statet &state, exprt &rhs)
196
192
{
197
193
for (auto it = rhs.depth_begin (), itend = rhs.depth_end (); it != itend;)
198
194
{
@@ -201,10 +197,10 @@ void goto_symext::lift_lets(
201
197
// Visit post-order, so more-local definitions are made before usage:
202
198
exprt &replaced_expr = it.mutate ();
203
199
let_exprt &replaced_let = to_let_expr (replaced_expr);
204
- lift_lets (state, replaced_let.value (), assignment_type );
205
- lift_lets (state, replaced_let.where (), assignment_type );
200
+ lift_lets (state, replaced_let.value ());
201
+ lift_lets (state, replaced_let.where ());
206
202
207
- lift_let (state, replaced_let, assignment_type );
203
+ lift_let (state, replaced_let);
208
204
replaced_expr = replaced_let.where ();
209
205
210
206
it.next_sibling_or_parent ();
@@ -221,7 +217,7 @@ void goto_symext::clean_expr(
221
217
{
222
218
replace_nondet (expr, path_storage.build_symex_nondet );
223
219
dereference (expr, state, write);
224
- lift_lets (state, expr, symex_targett::assignment_typet::STATE );
220
+ lift_lets (state, expr);
225
221
226
222
// make sure all remaining byte extract operations use the root
227
223
// object to avoid nesting of with/update and byte_update when on
0 commit comments