Skip to content

Commit 9beb633

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 e16f2fc commit 9beb633

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
@@ -26,7 +26,7 @@ Author: Daniel Kroening, [email protected]
2626

2727
#include <analyses/dirty.h>
2828

29-
static void get_l1_name(exprt &expr);
29+
static level1t<exprt> get_l1_name(exprt expr);
3030

3131
goto_symex_statet::goto_symex_statet(const symex_targett::sourcet &_source)
3232
: goto_statet(_source), symex_target(nullptr), record_events(true), dirty()
@@ -210,18 +210,19 @@ void goto_symex_statet::assignment(
210210

211211
{
212212
// update value sets
213-
exprt l1_rhs(rhs);
214-
get_l1_name(l1_rhs);
213+
level1t<exprt> l1_rhs = get_l1_name(rhs);
215214
level1t<ssa_exprt> l1_lhs = remove_level2(lhs);
216215

217216
if(run_validation_checks)
218217
{
219218
DATA_INVARIANT(
220219
!check_renaming_l1(l1_lhs.expr), "lhs renaming failed on l1");
221-
DATA_INVARIANT(!check_renaming_l1(l1_rhs), "rhs renaming failed on l1");
220+
DATA_INVARIANT(
221+
!check_renaming_l1(l1_rhs.expr), "rhs renaming failed on l1");
222222
}
223223

224-
value_set.assign(l1_lhs.expr, l1_rhs, ns, rhs_is_simplified, is_shared);
224+
value_set.assign(
225+
l1_lhs.expr, l1_rhs.expr, ns, rhs_is_simplified, is_shared);
225226
}
226227

227228
#if 0
@@ -742,16 +743,14 @@ void goto_symex_statet::rename(
742743
l1_type_entry.first->second=type;
743744
}
744745

745-
static void get_l1_name(exprt &expr)
746+
static level1t<exprt> get_l1_name(exprt expr)
746747
{
747748
// do not reset the type !
748-
749-
if(expr.id()==ID_symbol &&
750-
expr.get_bool(ID_C_SSA_symbol))
751-
to_ssa_expr(expr).remove_level_2();
752-
else
753-
Forall_operands(it, expr)
754-
get_l1_name(*it);
749+
if(auto ssa = expr_try_dynamic_cast<ssa_exprt>(expr))
750+
return level1t<exprt>{remove_level2(std::move(*ssa)).expr};
751+
Forall_operands(it, expr)
752+
*it = get_l1_name(std::move(*it)).expr;
753+
return level1t<exprt>{expr};
755754
}
756755

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

0 commit comments

Comments
 (0)