Skip to content

Commit 530c35b

Browse files
Make symex_level0 a function
A functor without state is just a function.
1 parent 228e765 commit 530c35b

File tree

7 files changed

+19
-24
lines changed

7 files changed

+19
-24
lines changed

src/goto-symex/goto_symex_state.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,22 @@ template <>
135135
renamedt<ssa_exprt, L0>
136136
goto_symex_statet::set_indices<L0>(ssa_exprt ssa_expr, const namespacet &ns)
137137
{
138-
return level0(std::move(ssa_expr), ns, source.thread_nr);
138+
return symex_level0(std::move(ssa_expr), ns, source.thread_nr);
139139
}
140140

141141
template <>
142142
renamedt<ssa_exprt, L1>
143143
goto_symex_statet::set_indices<L1>(ssa_exprt ssa_expr, const namespacet &ns)
144144
{
145-
return level1(level0(std::move(ssa_expr), ns, source.thread_nr));
145+
return level1(symex_level0(std::move(ssa_expr), ns, source.thread_nr));
146146
}
147147

148148
template <>
149149
renamedt<ssa_exprt, L2>
150150
goto_symex_statet::set_indices<L2>(ssa_exprt ssa_expr, const namespacet &ns)
151151
{
152-
return level2(level1(level0(std::move(ssa_expr), ns, source.thread_nr)));
152+
return level2(
153+
level1(symex_level0(std::move(ssa_expr), ns, source.thread_nr)));
153154
}
154155

155156
renamedt<ssa_exprt, L2> goto_symex_statet::assignment(

src/goto-symex/goto_symex_state.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ class goto_symex_statet final : public goto_statet
7070
guard_managert &guard_manager;
7171
symex_target_equationt *symex_target;
7272

73-
symex_level0t level0;
7473
symex_level1t level1;
7574

7675
/// Rewrites symbol expressions in \ref exprt, applying a suffix to each

src/goto-symex/renamed.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ class renamedt : private underlyingt
4949
return static_cast<underlyingt &>(*this);
5050
};
5151

52-
friend struct symex_level0t;
52+
friend renamedt<ssa_exprt, L0>
53+
symex_level0(ssa_exprt, const namespacet &, unsigned);
5354
friend struct symex_level1t;
5455
friend struct symex_level2t;
5556
friend class goto_symex_statet;

src/goto-symex/renaming_level.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ void get_variables(
3030
}
3131
}
3232

33-
renamedt<ssa_exprt, L0> symex_level0t::
34-
operator()(ssa_exprt ssa_expr, const namespacet &ns, unsigned thread_nr) const
33+
renamedt<ssa_exprt, L0>
34+
symex_level0(ssa_exprt ssa_expr, const namespacet &ns, unsigned thread_nr)
3535
{
3636
// already renamed?
3737
if(!ssa_expr.get_level_0().empty())

src/goto-symex/renaming_level.h

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,14 @@ void get_variables(
3737
const symex_renaming_levelt &current_names,
3838
std::unordered_set<ssa_exprt, irep_hash> &vars);
3939

40-
/// Functor to set the level 0 renaming of SSA expressions.
40+
/// Set the level 0 renaming of SSA expressions.
4141
/// Level 0 corresponds to threads.
4242
/// The renaming is built for one particular interleaving.
43-
struct symex_level0t
44-
{
45-
/// Rename \p ssa_expr using \p thread_nr as L0 tag, unless \p ssa_expr is
46-
/// a guard, a shared variable or a function. \p ns is queried to decide
47-
/// whether we are in one of these cases.
48-
renamedt<ssa_exprt, L0> operator()(
49-
ssa_exprt ssa_expr,
50-
const namespacet &ns,
51-
unsigned thread_nr) const;
52-
};
43+
/// Rename \p ssa_expr using \p thread_nr as L0 tag, unless \p ssa_expr is
44+
/// a guard, a shared variable or a function. \p ns is queried to decide
45+
/// whether we are in one of these cases.
46+
renamedt<ssa_exprt, L0>
47+
symex_level0(ssa_exprt ssa_expr, const namespacet &ns, unsigned thread_nr);
5348

5449
/// Functor to set the level 1 renaming of SSA expressions.
5550
/// Level 1 corresponds to function frames.

src/goto-symex/symex_start_thread.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ void goto_symext::symex_start_thread(statet &state)
6767
ssa_exprt lhs(pair.second.first.get_original_expr());
6868

6969
// get L0 name for current thread
70-
const renamedt<ssa_exprt, L0> l0_lhs =
71-
symex_level0t{}(std::move(lhs), ns, t);
70+
const renamedt<ssa_exprt, L0> l0_lhs = symex_level0(std::move(lhs), ns, t);
7271
const irep_idt &l0_name = l0_lhs.get().get_identifier();
7372
std::size_t l1_index = path_storage.get_unique_l1_index(l0_name, 0);
7473
CHECK_RETURN(l1_index == 0);

unit/goto-symex/symex_level0.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ SCENARIO("Level 0 renaming", "[core][goto-symex][symex-level0]")
7272

7373
WHEN("The non-shared symbol is renamed")
7474
{
75-
auto renamed = symex_level0t{}(ssa_nonshared, ns, 423);
75+
auto renamed = symex_level0(ssa_nonshared, ns, 423);
7676

7777
THEN("Its L0 tag is set to the thread index")
7878
{
@@ -82,7 +82,7 @@ SCENARIO("Level 0 renaming", "[core][goto-symex][symex-level0]")
8282

8383
WHEN("The shared symbol is renamed")
8484
{
85-
auto renamed = symex_level0t{}(ssa_shared, ns, 423);
85+
auto renamed = symex_level0(ssa_shared, ns, 423);
8686

8787
THEN("Its L0 tag is unchanged")
8888
{
@@ -92,7 +92,7 @@ SCENARIO("Level 0 renaming", "[core][goto-symex][symex-level0]")
9292

9393
WHEN("The guard is renamed")
9494
{
95-
auto renamed = symex_level0t{}(ssa_guard, ns, 423);
95+
auto renamed = symex_level0(ssa_guard, ns, 423);
9696

9797
THEN("Its L0 tag is unchanged")
9898
{
@@ -104,7 +104,7 @@ SCENARIO("Level 0 renaming", "[core][goto-symex][symex-level0]")
104104

105105
WHEN("The function is renamed")
106106
{
107-
auto renamed = symex_level0t{}(ssa_fun, ns, 423);
107+
auto renamed = symex_level0(ssa_fun, ns, 423);
108108

109109
THEN("Its L0 tag is unchanged")
110110
{

0 commit comments

Comments
 (0)