@@ -156,20 +156,23 @@ class goto_symex_is_constantt : public is_constantt
156
156
}
157
157
};
158
158
159
+ template <>
159
160
renamedt<ssa_exprt, L0>
160
- goto_symex_statet::set_l0_indices (ssa_exprt ssa_expr, const namespacet &ns)
161
+ goto_symex_statet::set_indices<L0> (ssa_exprt ssa_expr, const namespacet &ns)
161
162
{
162
163
return level0 (std::move (ssa_expr), ns, source.thread_nr );
163
164
}
164
165
166
+ template <>
165
167
renamedt<ssa_exprt, L1>
166
- goto_symex_statet::set_l1_indices (ssa_exprt ssa_expr, const namespacet &ns)
168
+ goto_symex_statet::set_indices<L1> (ssa_exprt ssa_expr, const namespacet &ns)
167
169
{
168
170
return level1 (level0 (std::move (ssa_expr), ns, source.thread_nr ));
169
171
}
170
172
173
+ template <>
171
174
renamedt<ssa_exprt, L2>
172
- goto_symex_statet::set_l2_indices (ssa_exprt ssa_expr, const namespacet &ns)
175
+ goto_symex_statet::set_indices<L2> (ssa_exprt ssa_expr, const namespacet &ns)
173
176
{
174
177
return level2 (level1 (level0 (std::move (ssa_expr), ns, source.thread_nr )));
175
178
}
@@ -206,7 +209,7 @@ void goto_symex_statet::assignment(
206
209
const auto level2_it =
207
210
level2.current_names .emplace (l1_identifier, std::make_pair (lhs, 0 )).first ;
208
211
symex_renaming_levelt::increase_counter (level2_it);
209
- lhs = set_l2_indices (std::move (lhs), ns).get ();
212
+ lhs = set_indices<L2> (std::move (lhs), ns).get ();
210
213
211
214
// in case we happen to be multi-threaded, record the memory access
212
215
bool is_shared=l2_thread_write_encoding (lhs, ns);
@@ -260,9 +263,9 @@ ssa_exprt goto_symex_statet::rename_ssa(ssa_exprt ssa, const namespacet &ns)
260
263
level == L0 || level == L1,
261
264
" rename_ssa can only be used for levels L0 and L1" );
262
265
if (level == L0)
263
- ssa = set_l0_indices (std::move (ssa), ns).get ();
266
+ ssa = set_indices<L0> (std::move (ssa), ns).get ();
264
267
else if (level == L1)
265
- ssa = set_l1_indices (std::move (ssa), ns).get ();
268
+ ssa = set_indices<L1> (std::move (ssa), ns).get ();
266
269
else
267
270
UNREACHABLE;
268
271
@@ -297,7 +300,7 @@ exprt goto_symex_statet::rename(exprt expr, const namespacet &ns)
297
300
}
298
301
else if (level==L2)
299
302
{
300
- ssa = set_l1_indices (std::move (ssa), ns).get ();
303
+ ssa = set_indices<L1> (std::move (ssa), ns).get ();
301
304
rename <level>(expr.type (), ssa.get_identifier (), ns);
302
305
ssa.update_type ();
303
306
@@ -318,7 +321,7 @@ exprt goto_symex_statet::rename(exprt expr, const namespacet &ns)
318
321
if (p_it != propagation.end ())
319
322
expr=p_it->second ; // already L2
320
323
else
321
- ssa = set_l2_indices (std::move (ssa), ns).get ();
324
+ ssa = set_indices<L2> (std::move (ssa), ns).get ();
322
325
}
323
326
}
324
327
}
@@ -432,7 +435,7 @@ bool goto_symex_statet::l2_thread_read_encoding(
432
435
if (!no_write.op ().is_false ())
433
436
cond |= guardt{no_write.op ()};
434
437
435
- const renamedt<ssa_exprt, L2> l2_true_case = set_l2_indices (ssa_l1, ns);
438
+ const renamedt<ssa_exprt, L2> l2_true_case = set_indices<L2> (ssa_l1, ns);
436
439
437
440
if (a_s_read.second .empty ())
438
441
{
@@ -442,7 +445,7 @@ bool goto_symex_statet::l2_thread_read_encoding(
442
445
symex_renaming_levelt::increase_counter (level2_it);
443
446
a_s_read.first =level2.current_count (l1_identifier);
444
447
}
445
- const renamedt<ssa_exprt, L2> l2_false_case = set_l2_indices (ssa_l1, ns);
448
+ const renamedt<ssa_exprt, L2> l2_false_case = set_indices<L2> (ssa_l1, ns);
446
449
447
450
exprt tmp;
448
451
if (cond.is_false ())
@@ -464,7 +467,7 @@ bool goto_symex_statet::l2_thread_read_encoding(
464
467
source,
465
468
symex_targett::assignment_typet::PHI);
466
469
467
- expr = set_l2_indices (std::move (ssa_l1), ns).get ();
470
+ expr = set_indices<L2> (std::move (ssa_l1), ns).get ();
468
471
469
472
a_s_read.second .push_back (guard);
470
473
if (!no_write.op ().is_false ())
@@ -480,13 +483,13 @@ bool goto_symex_statet::l2_thread_read_encoding(
480
483
// No event and no fresh index, but avoid constant propagation
481
484
if (!record_events)
482
485
{
483
- expr = set_l2_indices (std::move (ssa_l1), ns).get ();
486
+ expr = set_indices<L2> (std::move (ssa_l1), ns).get ();
484
487
return true ;
485
488
}
486
489
487
490
// produce a fresh L2 name
488
491
symex_renaming_levelt::increase_counter (level2_it);
489
- expr = set_l2_indices (std::move (ssa_l1), ns).get ();
492
+ expr = set_indices<L2> (std::move (ssa_l1), ns).get ();
490
493
491
494
// and record that
492
495
INVARIANT_STRUCTURED (
@@ -543,7 +546,7 @@ void goto_symex_statet::rename_address(exprt &expr, const namespacet &ns)
543
546
ssa_exprt &ssa=to_ssa_expr (expr);
544
547
545
548
// only do L1!
546
- ssa = set_l1_indices (std::move (ssa), ns).get ();
549
+ ssa = set_indices<L1> (std::move (ssa), ns).get ();
547
550
548
551
rename <level>(expr.type (), ssa.get_identifier (), ns);
549
552
ssa.update_type ();
0 commit comments