@@ -11,8 +11,6 @@ Author: Daniel Kroening, kroening@kroening.com
1111
1212#include  " goto_symex.h" 
1313
14- #include  < cassert> 
15- 
1614#include  < util/std_expr.h> 
1715
1816#include  < pointer-analysis/add_failed_symbols.h> 
@@ -23,9 +21,6 @@ void goto_symext::symex_dead(statet &state)
2321
2422  const  code_deadt &code = instruction.get_dead ();
2523
26-   //  We increase the L2 renaming to make these non-deterministic.
27-   //  We also prevent propagation of old values.
28- 
2924  ssa_exprt ssa = state.rename_ssa <L1>(ssa_exprt{code.symbol ()}, ns);
3025
3126  //  in case of pointers, put something into the value set
@@ -43,10 +38,13 @@ void goto_symext::symex_dead(statet &state)
4338
4439  const  irep_idt &l1_identifier = ssa.get_identifier ();
4540
46-   //  prevent propagation
41+   //  we cannot remove the object from the L1 renaming map, because L1 renaming
42+   //  information is not local to a path, but removing it from the propagation
43+   //  map is safe as 1) it is local to a path and 2) this instance can no longer
44+   //  appear
4745  state.propagation .erase (l1_identifier);
48- 
49-   //  L2 renaming 
46+    //  increment the L2 index to ensure a merge on join points will propagate the 
47+   //  value for branches that are still live 
5048  auto  level2_it = state.level2 .current_names .find (l1_identifier);
5149  if (level2_it != state.level2 .current_names .end ())
5250    symex_renaming_levelt::increase_counter (level2_it);
0 commit comments