Skip to content

Commit c2f1d5b

Browse files
committed
Clarify comments in symex_dead
Try to make clearer what we can(not) remove from renaming maps. Also do small cleanups of the code.
1 parent 2ee5a33 commit c2f1d5b

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/goto-symex/symex_dead.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ Author: Daniel Kroening, [email protected]
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<statet::L1>(ssa_exprt{code.symbol()}, ns);
3025

3126
// in case of pointers, put something into the value set
@@ -44,10 +39,13 @@ void goto_symext::symex_dead(statet &state)
4439

4540
const irep_idt &l1_identifier = ssa.get_identifier();
4641

47-
// prevent propagation
42+
// we cannot remove the object from the L1 renaming map, because L1 renaming
43+
// information is not local to a path, but removing it from the propagation
44+
// map is safe as 1) it is local to a path and 2) this instance can no longer
45+
// appear
4846
state.propagation.erase(l1_identifier);
49-
50-
// L2 renaming
47+
// increment the L2 index to ensure a merge on join points will propagate the
48+
// value for branches that are still live
5149
auto level2_it = state.level2.current_names.find(l1_identifier);
5250
if(level2_it != state.level2.current_names.end())
5351
symex_renaming_levelt::increase_counter(level2_it);

0 commit comments

Comments
 (0)