Skip to content

Commit 4bb3472

Browse files
Make symex_level1t::operator() return a renamedt
This makes it explicit in the type that the expression has been renamed.
1 parent ba9e63d commit 4bb3472

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

src/goto-symex/goto_symex_state.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@ void goto_symex_statet::set_l1_indices(
250250
return;
251251
if(!ssa_expr.get_level_1().empty())
252252
return;
253-
renamedt<ssa_exprt, L0> l0 =
254-
level0(std::move(ssa_expr), ns, source.thread_nr);
255-
ssa_expr = level1(l0.get());
253+
renamedt<ssa_exprt, L1> l1 =
254+
level1(level0(std::move(ssa_expr), ns, source.thread_nr));
255+
ssa_expr = l1.get();
256256
}
257257

258258
void goto_symex_statet::set_l2_indices(
@@ -261,10 +261,9 @@ void goto_symex_statet::set_l2_indices(
261261
{
262262
if(!ssa_expr.get_level_2().empty())
263263
return;
264-
renamedt<ssa_exprt, L0> l0 =
265-
level0(std::move(ssa_expr), ns, source.thread_nr);
266-
ssa_exprt l1 = level1(l0.get());
267-
ssa_expr = level2(std::move(l1));
264+
renamedt<ssa_exprt, L1> l1 =
265+
level1(level0(std::move(ssa_expr), ns, source.thread_nr);
266+
ssa_expr = level2(l1.get());
268267
}
269268

270269
template <levelt level>

src/goto-symex/renaming_level.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,21 @@ operator()(ssa_exprt ssa_expr, const namespacet &ns, unsigned thread_nr) const
4343
return renamedt<ssa_exprt, L0>{ssa_expr};
4444
}
4545

46-
ssa_exprt symex_level1t::operator()(ssa_exprt ssa_expr) const
46+
renamedt<ssa_exprt, L1> symex_level1t::
47+
operator()(renamedt<ssa_exprt, L0> l0_expr) const
4748
{
48-
// already renamed?
49-
if(!ssa_expr.get_level_1().empty())
50-
return ssa_expr;
49+
if(!l0_expr.get().get_level_1().empty())
50+
return renamedt<ssa_exprt, L1>{std::move(l0_expr.value)};
5151

52-
const irep_idt l0_name = ssa_expr.get_l1_object_identifier();
52+
const irep_idt l0_name = l0_expr.get().get_l1_object_identifier();
5353

5454
const auto it = current_names.find(l0_name);
5555
if(it == current_names.end())
56-
return ssa_expr;
56+
return renamedt<ssa_exprt, L1>{std::move(l0_expr.value)};
5757

5858
// rename!
59-
ssa_expr.set_level_1(it->second.second);
60-
return ssa_expr;
59+
l0_expr.value.set_level_1(it->second.second);
60+
return renamedt<ssa_exprt, L1>{std::move(l0_expr.value)};
6161
}
6262

6363
ssa_exprt symex_level2t::operator()(ssa_exprt ssa_expr) const

src/goto-symex/renaming_level.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ struct symex_level0t : public symex_renaming_levelt
107107
/// This is to preserve locality in case of recursion
108108
struct symex_level1t : public symex_renaming_levelt
109109
{
110-
ssa_exprt operator()(ssa_exprt ssa_expr) const;
110+
renamedt<ssa_exprt, L1> operator()(renamedt<ssa_exprt, L0> l0_expr) const;
111111

112112
/// Insert the content of \p other into this renaming
113113
void restore_from(const current_namest &other);

0 commit comments

Comments
 (0)