@@ -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,13 +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,
196
- exprt &rhs,
197
- assignment_typet assignment_type)
191
+ symex_live_let_variablest goto_symext::lift_lets (statet &state, exprt &rhs)
198
192
{
199
193
for (auto it = rhs.depth_begin (), itend = rhs.depth_end (); it != itend;)
200
194
{
@@ -203,10 +197,10 @@ void goto_symext::lift_lets(
203
197
// Visit post-order, so more-local definitions are made before usage:
204
198
exprt &replaced_expr = it.mutate ();
205
199
let_exprt &replaced_let = to_let_expr (replaced_expr);
206
- lift_lets (state, replaced_let.value (), assignment_type );
207
- lift_lets (state, replaced_let.where (), assignment_type );
200
+ lift_lets (state, replaced_let.value ());
201
+ lift_lets (state, replaced_let.where ());
208
202
209
- lift_let (state, replaced_let, assignment_type );
203
+ lift_let (state, replaced_let);
210
204
replaced_expr = replaced_let.where ();
211
205
212
206
it.next_sibling_or_parent ();
@@ -223,7 +217,7 @@ void goto_symext::clean_expr(
223
217
{
224
218
replace_nondet (expr, path_storage.build_symex_nondet );
225
219
dereference (expr, state, write );
226
- lift_lets (state, expr, symex_targett::assignment_typet::STATE );
220
+ lift_lets (state, expr);
227
221
228
222
// make sure all remaining byte extract operations use the root
229
223
// object to avoid nesting of with/update and byte_update when on
0 commit comments