Skip to content

Commit dbd153a

Browse files
Make symex_level0t::operator() return a renamedt
This makes it explicit that the expresssion has been renamed.
1 parent c15b3f3 commit dbd153a

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

src/goto-symex/goto_symex_state.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,9 @@ void goto_symex_statet::set_l0_indices(
237237
ssa_exprt &ssa_expr,
238238
const namespacet &ns)
239239
{
240-
ssa_expr = level0(std::move(ssa_expr), ns, source.thread_nr);
240+
renamedt<ssa_exprt, L0> renamed =
241+
level0(std::move(ssa_expr), ns, source.thread_nr);
242+
ssa_expr = renamed.get();
241243
}
242244

243245
void goto_symex_statet::set_l1_indices(
@@ -248,8 +250,9 @@ void goto_symex_statet::set_l1_indices(
248250
return;
249251
if(!ssa_expr.get_level_1().empty())
250252
return;
251-
ssa_exprt l0 = level0(std::move(ssa_expr), ns, source.thread_nr);
252-
ssa_expr = level1(std::move(l0));
253+
renamedt<ssa_exprt, L0> l0 =
254+
level0(std::move(ssa_expr), ns, source.thread_nr);
255+
ssa_expr = level1(l0.get());
253256
}
254257

255258
void goto_symex_statet::set_l2_indices(
@@ -258,8 +261,9 @@ void goto_symex_statet::set_l2_indices(
258261
{
259262
if(!ssa_expr.get_level_2().empty())
260263
return;
261-
ssa_exprt l0 = level0(std::move(ssa_expr), ns, source.thread_nr);
262-
ssa_exprt l1 = level1(std::move(l0));
264+
renamedt<ssa_exprt, L0> l0 =
265+
level0(std::move(ssa_expr), ns, source.thread_nr);
266+
ssa_exprt l1 = level1(l0.get());
263267
ssa_expr = level2(std::move(l1));
264268
}
265269

src/goto-symex/renaming_level.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,30 @@ Author: Romain Brenguier, [email protected]
1717

1818
#include "goto_symex_state.h"
1919

20-
ssa_exprt symex_level0t::
20+
renamedt<ssa_exprt, L0> symex_level0t::
2121
operator()(ssa_exprt ssa_expr, const namespacet &ns, unsigned thread_nr) const
2222
{
2323
// already renamed?
2424
if(!ssa_expr.get_level_0().empty())
25-
return std::move(ssa_expr);
25+
return renamedt<ssa_exprt, L0>{std::move(ssa_expr)};
2626

2727
const irep_idt &obj_identifier = ssa_expr.get_object_name();
2828

2929
// guards are not L0-renamed
3030
if(obj_identifier == goto_symex_statet::guard_identifier())
31-
return std::move(ssa_expr);
31+
return renamedt<ssa_exprt, L0>{std::move(ssa_expr)};
3232

3333
const symbolt *s;
3434
const bool found_l0 = !ns.lookup(obj_identifier, s);
3535
INVARIANT(found_l0, "level0: failed to find " + id2string(obj_identifier));
3636

3737
// don't rename shared variables or functions
3838
if(s->type.id() == ID_code || s->is_shared())
39-
return std::move(ssa_expr);
39+
return renamedt<ssa_exprt, L0>{std::move(ssa_expr)};
4040

4141
// rename!
4242
ssa_expr.set_level_0(thread_nr);
43-
return ssa_expr;
43+
return renamedt<ssa_exprt, L0>{ssa_expr};
4444
}
4545

4646
ssa_exprt symex_level1t::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
@@ -93,7 +93,7 @@ class renamedt
9393
/// The renaming is built for one particular interleaving.
9494
struct symex_level0t : public symex_renaming_levelt
9595
{
96-
ssa_exprt operator()(
96+
renamedt<ssa_exprt, L0> operator()(
9797
ssa_exprt ssa_expr,
9898
const namespacet &ns,
9999
unsigned thread_nr) const;

0 commit comments

Comments
 (0)