aboutsummaryrefslogtreecommitdiff
path: root/src/ssa.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ssa.c')
-rw-r--r--src/ssa.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/ssa.c b/src/ssa.c
index 7af342b..74ad59a 100644
--- a/src/ssa.c
+++ b/src/ssa.c
@@ -72,6 +72,9 @@ top:
}
b = vect_pop(struct blk *, stack);
+ if (done(b, visited))
+ goto top;
+
if (return_blk(b)) {
b->s1 = NULL;
b->s2 = NULL;
@@ -185,13 +188,16 @@ top:
}
b = vect_pop(struct blk *, stack);
+ if (done(b, visited))
+ goto top;
+
if (!entered(b, visited)) {
vec_append(&stack, &b);
if (b->s1)
vec_append(&stack, &b->s1);
- if (b->s2)
+ if (b->s2 && b->s2 != b->s1)
vec_append(&stack, &b->s2);
enter(b);