@@ -597,6 +597,13 @@ void goto_symex_statet::rename_address(
597
597
const namespacet &ns,
598
598
levelt level)
599
599
{
600
+ auto rename_expr = [&](exprt &e) {
601
+ if (level == L0)
602
+ rename_level0 (e, ns);
603
+ else
604
+ rename (e, ns, level);
605
+ };
606
+
600
607
if (expr.id ()==ID_symbol &&
601
608
expr.get_bool (ID_C_SSA_symbol))
602
609
{
@@ -624,13 +631,13 @@ void goto_symex_statet::rename_address(
624
631
expr.type () = to_array_type (index_expr.array ().type ()).subtype ();
625
632
626
633
// the index is not an address
627
- rename (index_expr.index (), ns, level );
634
+ rename_expr (index_expr.index ());
628
635
}
629
636
else if (expr.id ()==ID_if)
630
637
{
631
638
// the condition is not an address
632
639
if_exprt &if_expr=to_if_expr (expr);
633
- rename (if_expr.cond (), ns, level );
640
+ rename_expr (if_expr.cond ());
634
641
rename_address (if_expr.true_case (), ns, level);
635
642
rename_address (if_expr.false_case (), ns, level);
636
643
@@ -692,6 +699,13 @@ void goto_symex_statet::rename(
692
699
const namespacet &ns,
693
700
levelt level)
694
701
{
702
+ auto rename_expr = [&](exprt &e) {
703
+ if (level == L0)
704
+ rename_level0 (e, ns);
705
+ else
706
+ rename (e, ns, level);
707
+ };
708
+
695
709
// rename all the symbols with their last known value
696
710
// to the given level
697
711
@@ -721,7 +735,7 @@ void goto_symex_statet::rename(
721
735
if (const auto &array_type = type_try_dynamic_cast<array_typet>(type))
722
736
{
723
737
rename (array_type->subtype (), irep_idt (), ns, level);
724
- rename (array_type->size (), ns, level );
738
+ rename_expr (array_type->size ());
725
739
}
726
740
else if (
727
741
const auto &s_u_type = type_try_dynamic_cast<struct_union_typet>(type))
@@ -730,7 +744,7 @@ void goto_symex_statet::rename(
730
744
{
731
745
// be careful, or it might get cyclic
732
746
if (component.type ().id () == ID_array)
733
- rename (to_array_type (component.type ()).size (), ns, level );
747
+ rename_expr (to_array_type (component.type ()).size ());
734
748
else if (component.type ().id () != ID_pointer)
735
749
rename (component.type (), irep_idt (), ns, level);
736
750
}
0 commit comments