Skip to content

Commit 949337a

Browse files
Make get_l1_name return a level1t
Makes it clearer that what is returned is an expression that has been renamed up to level1.
1 parent 229aebe commit 949337a

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

src/goto-symex/goto_symex_state.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Author: Daniel Kroening, [email protected]
2525

2626
#include <analyses/dirty.h>
2727

28-
static void get_l1_name(exprt &expr);
28+
static level1t<exprt> get_l1_name(exprt expr);
2929

3030
static void set_l2_indices(
3131
const symex_level1t &level1,
@@ -222,18 +222,19 @@ void goto_symex_statet::assignment(
222222

223223
{
224224
// update value sets
225-
exprt l1_rhs(rhs);
226-
get_l1_name(l1_rhs);
225+
level1t<exprt> l1_rhs = get_l1_name(rhs);
227226
level1t<ssa_exprt> l1_lhs = remove_level2(lhs);
228227

229228
if(run_validation_checks)
230229
{
231230
DATA_INVARIANT(
232231
!check_renaming_l1(l1_lhs.expr), "lhs renaming failed on l1");
233-
DATA_INVARIANT(!check_renaming_l1(l1_rhs), "rhs renaming failed on l1");
232+
DATA_INVARIANT(
233+
!check_renaming_l1(l1_rhs.expr), "rhs renaming failed on l1");
234234
}
235235

236-
value_set.assign(l1_lhs.expr, l1_rhs, ns, rhs_is_simplified, is_shared);
236+
value_set.assign(
237+
l1_lhs.expr, l1_rhs.expr, ns, rhs_is_simplified, is_shared);
237238
}
238239

239240
#if 0
@@ -876,16 +877,14 @@ void goto_symex_statet::get_original_name(typet &type) const
876877
}
877878
}
878879

879-
static void get_l1_name(exprt &expr)
880+
static level1t<exprt> get_l1_name(exprt expr)
880881
{
881882
// do not reset the type !
882-
883-
if(expr.id()==ID_symbol &&
884-
expr.get_bool(ID_C_SSA_symbol))
885-
to_ssa_expr(expr).remove_level_2();
886-
else
887-
Forall_operands(it, expr)
888-
get_l1_name(*it);
883+
if(auto ssa = expr_try_dynamic_cast<ssa_exprt>(expr))
884+
return level1t<exprt>{remove_level2(std::move(*ssa)).expr};
885+
Forall_operands(it, expr)
886+
*it = get_l1_name(std::move(*it)).expr;
887+
return level1t<exprt>{expr};
889888
}
890889

891890
/// Dumps the current state of symex, printing the function name and location

0 commit comments

Comments
 (0)