Skip to content

Commit fe6257e

Browse files
Remove L1 case from rename
rename_level1 should be called instead now.
1 parent c3487c3 commit fe6257e

File tree

1 file changed

+22
-37
lines changed

1 file changed

+22
-37
lines changed

src/goto-symex/goto_symex_state.cpp

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -365,78 +365,63 @@ void goto_symex_statet::rename(
365365
levelt level)
366366
{
367367
// rename all the symbols with their last known value
368+
PRECONDITION(level == L2);
368369

369370
if(expr.id()==ID_symbol &&
370371
expr.get_bool(ID_C_SSA_symbol))
371372
{
372373
ssa_exprt &ssa=to_ssa_expr(expr);
374+
set_l1_indices(level0, level1, ssa, source.thread_nr, ns);
375+
rename(expr.type(), ssa.get_identifier(), ns);
376+
ssa.update_type();
373377

374-
if(level == L1)
378+
if(l2_thread_read_encoding(ssa, ns))
379+
{
380+
// renaming taken care of by l2_thread_encoding
381+
}
382+
else if(!ssa.get_level_2().empty())
375383
{
376-
set_l1_indices(level1, ssa, source.thread_nr, ns);
377-
rename(expr.type(), ssa.get_identifier(), ns, level);
378-
ssa.update_type();
384+
// already at L2
379385
}
380-
else if(level==L2)
386+
else
381387
{
382-
set_l1_indices(level1, ssa, source.thread_nr, ns);
383-
rename(expr.type(), ssa.get_identifier(), ns, level);
384-
ssa.update_type();
388+
// We also consider propagation if we go up to L2.
389+
// L1 identifiers are used for propagation!
390+
auto p_it = propagation.find(ssa.get_identifier());
385391

386-
if(l2_thread_read_encoding(ssa, ns))
387-
{
388-
// renaming taken care of by l2_thread_encoding
389-
}
390-
else if(!ssa.get_level_2().empty())
391-
{
392-
// already at L2
393-
}
392+
if(p_it != propagation.end())
393+
expr = p_it->second; // already L2
394394
else
395-
{
396-
// We also consider propagation if we go up to L2.
397-
// L1 identifiers are used for propagation!
398-
auto p_it = propagation.find(ssa.get_identifier());
399-
400-
if(p_it != propagation.end())
401-
expr=p_it->second; // already L2
402-
else
403-
set_l2_indices(level1, level2, ssa, source.thread_nr, ns);
404-
}
395+
set_l2_indices(level0, level1, level2, ssa, source.thread_nr, ns);
405396
}
406-
else
407-
UNREACHABLE;
408397
}
409398
else if(expr.id()==ID_symbol)
410399
{
411400
// we never rename function symbols
412401
if(expr.type().id() == ID_code)
413402
{
414-
rename(
415-
expr.type(),
416-
to_symbol_expr(expr).get_identifier(),
417-
ns,
418-
level);
403+
rename(expr.type(), to_symbol_expr(expr).get_identifier(), ns, L2);
419404

420405
return;
421406
}
422407

423408
expr=ssa_exprt(expr);
424-
rename(expr, ns, level);
409+
rename(expr, ns);
425410
}
426411
else if(expr.id()==ID_address_of)
427412
{
428413
auto &address_of_expr = to_address_of_expr(expr);
429-
rename_address(address_of_expr.object(), ns, level);
414+
rename_address(address_of_expr.object(), ns, L2);
430415
to_pointer_type(expr.type()).subtype() = address_of_expr.object().type();
431416
}
432417
else
433418
{
434419
// this could go wrong, but we would have to re-typecheck ...
435-
rename(expr.type(), irep_idt(), ns, level);
420+
rename(expr.type(), irep_idt(), ns, L2);
436421

437422
// do this recursively
438423
Forall_operands(it, expr)
439-
rename(*it, ns, level);
424+
rename(*it, ns);
440425

441426
// some fixes
442427
if(expr.id()==ID_with)

0 commit comments

Comments
 (0)