aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-threadedge.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssa-threadedge.c')
-rw-r--r--gcc/tree-ssa-threadedge.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index 7bb8829..a144875 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -1072,6 +1072,10 @@ thread_across_edge (gimple dummy_cond,
/* Look at each successor of E->dest to see if we can thread through it. */
FOR_EACH_EDGE (taken_edge, ei, e->dest->succs)
{
+ /* Push a fresh marker so we can unwind the equivalences created
+ for each of E->dest's successors. */
+ stack->safe_push (NULL_TREE);
+
/* Avoid threading to any block we have already visited. */
bitmap_clear (visited);
bitmap_set_bit (visited, taken_edge->dest->index);
@@ -1118,6 +1122,9 @@ thread_across_edge (gimple dummy_cond,
{
delete_jump_thread_path (path);
}
+
+ /* And unwind the equivalence table. */
+ remove_temporary_equivalences (stack);
}
BITMAP_FREE (visited);
}