@@ -211,7 +211,7 @@ void goto_symex_statet::assignment(
211
211
if (level2.current_names .find (l1_identifier)==level2.current_names .end ())
212
212
level2.current_names [l1_identifier]=std::make_pair (lhs, 0 );
213
213
level2.increase_counter (l1_identifier);
214
- set_ssa_indices (lhs, ns, L2 );
214
+ set_l2_indices (lhs, ns);
215
215
216
216
// in case we happen to be multi-threaded, record the memory access
217
217
bool is_shared=l2_thread_write_encoding (lhs, ns);
@@ -253,37 +253,34 @@ void goto_symex_statet::assignment(
253
253
#endif
254
254
}
255
255
256
- void goto_symex_statet::set_ssa_indices (
256
+ void goto_symex_statet::set_l0_indices (
257
257
ssa_exprt &ssa_expr,
258
- const namespacet &ns,
259
- levelt level)
258
+ const namespacet &ns)
260
259
{
261
- switch (level)
262
- {
263
- case L0:
264
- level0 (ssa_expr, ns, source.thread_nr );
265
- break ;
266
-
267
- case L1:
268
- if (!ssa_expr.get_level_2 ().empty ())
269
- return ;
270
- if (!ssa_expr.get_level_1 ().empty ())
271
- return ;
272
- level0 (ssa_expr, ns, source.thread_nr );
273
- level1 (ssa_expr);
274
- break ;
260
+ level0 (ssa_expr, ns, source.thread_nr );
261
+ }
275
262
276
- case L2:
277
- if (!ssa_expr.get_level_2 ().empty ())
278
- return ;
279
- level0 (ssa_expr, ns, source.thread_nr );
280
- level1 (ssa_expr);
281
- ssa_expr.set_level_2 (level2.current_count (ssa_expr.get_identifier ()));
282
- break ;
263
+ void goto_symex_statet::set_l1_indices (
264
+ ssa_exprt &ssa_expr,
265
+ const namespacet &ns)
266
+ {
267
+ if (!ssa_expr.get_level_2 ().empty ())
268
+ return ;
269
+ if (!ssa_expr.get_level_1 ().empty ())
270
+ return ;
271
+ level0 (ssa_expr, ns, source.thread_nr );
272
+ level1 (ssa_expr);
273
+ }
283
274
284
- default :
285
- UNREACHABLE;
286
- }
275
+ void goto_symex_statet::set_l2_indices (
276
+ ssa_exprt &ssa_expr,
277
+ const namespacet &ns)
278
+ {
279
+ if (!ssa_expr.get_level_2 ().empty ())
280
+ return ;
281
+ level0 (ssa_expr, ns, source.thread_nr );
282
+ level1 (ssa_expr);
283
+ ssa_expr.set_level_2 (level2.current_count (ssa_expr.get_identifier ()));
287
284
}
288
285
289
286
void goto_symex_statet::rename (
@@ -298,15 +295,21 @@ void goto_symex_statet::rename(
298
295
{
299
296
ssa_exprt &ssa=to_ssa_expr (expr);
300
297
301
- if (level==L0 || level==L1)
298
+ if (level == L0)
299
+ {
300
+ set_l0_indices (ssa, ns);
301
+ rename (expr.type (), ssa.get_identifier (), ns, level);
302
+ ssa.update_type ();
303
+ }
304
+ else if (level == L1)
302
305
{
303
- set_ssa_indices (ssa, ns, level );
306
+ set_l1_indices (ssa, ns);
304
307
rename (expr.type (), ssa.get_identifier (), ns, level);
305
308
ssa.update_type ();
306
309
}
307
310
else if (level==L2)
308
311
{
309
- set_ssa_indices (ssa, ns, L1 );
312
+ set_l1_indices (ssa, ns);
310
313
rename (expr.type (), ssa.get_identifier (), ns, level);
311
314
ssa.update_type ();
312
315
@@ -327,7 +330,7 @@ void goto_symex_statet::rename(
327
330
if (p_it != propagation.end ())
328
331
expr=p_it->second ; // already L2
329
332
else
330
- set_ssa_indices (ssa, ns, L2 );
333
+ set_l2_indices (ssa, ns);
331
334
}
332
335
}
333
336
}
@@ -453,7 +456,7 @@ bool goto_symex_statet::l2_thread_read_encoding(
453
456
cond=or_exprt (no_write.op (), cond);
454
457
455
458
if_exprt tmp (cond, ssa_l1, ssa_l1);
456
- set_ssa_indices (to_ssa_expr (tmp.true_case ()), ns, L2 );
459
+ set_l2_indices (to_ssa_expr (tmp.true_case ()), ns);
457
460
458
461
if (a_s_read.second .empty ())
459
462
{
@@ -485,7 +488,7 @@ bool goto_symex_statet::l2_thread_read_encoding(
485
488
source,
486
489
symex_targett::assignment_typet::PHI);
487
490
488
- set_ssa_indices (ssa_l1, ns, L2 );
491
+ set_l2_indices (ssa_l1, ns);
489
492
expr=ssa_l1;
490
493
491
494
a_s_read.second .push_back (guard);
@@ -501,14 +504,14 @@ bool goto_symex_statet::l2_thread_read_encoding(
501
504
// No event and no fresh index, but avoid constant propagation
502
505
if (!record_events)
503
506
{
504
- set_ssa_indices (ssa_l1, ns, L2 );
507
+ set_l2_indices (ssa_l1, ns);
505
508
expr=ssa_l1;
506
509
return true ;
507
510
}
508
511
509
512
// produce a fresh L2 name
510
513
level2.increase_counter (l1_identifier);
511
- set_ssa_indices (ssa_l1, ns, L2 );
514
+ set_l2_indices (ssa_l1, ns);
512
515
expr=ssa_l1;
513
516
514
517
// and record that
@@ -570,7 +573,7 @@ void goto_symex_statet::rename_address(
570
573
ssa_exprt &ssa=to_ssa_expr (expr);
571
574
572
575
// only do L1!
573
- set_ssa_indices (ssa, ns, L1 );
576
+ set_l1_indices (ssa, ns);
574
577
575
578
rename (expr.type (), ssa.get_identifier (), ns, level);
576
579
ssa.update_type ();
0 commit comments