commit c81ed54562d223ab49be758075291432fe70ac58
parent 34b4e56ca46f763f72c3a8ef0d892c7d5bbc7132
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date: Mon, 9 Nov 2015 17:00:57 -0500
fix bug in frontier discovery
Diffstat:
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/lisc/ssa.c b/lisc/ssa.c
@@ -148,7 +148,7 @@ filldom(Fn *fn)
static int
sdom(Blk *b1, Blk *b2)
{
- if (b1 == b2)
+ if (!b2 || b1 == b2)
return 0;
while (b2->id > b1->id)
b2 = b2->idom;
@@ -176,12 +176,10 @@ fillfron(Fn *fn)
Blk *a, *b;
for (b=fn->start; b; b=b->link) {
- if (b->s1)
- for (a=b; !sdom(a, b->s1); a=a->link)
- addfron(a, b->s1);
- if (b->s2)
- for (a=b; !sdom(a, b->s2); a=a->link)
- addfron(a, b->s2);
+ for (a=b; !sdom(a, b->s1); a=a->idom)
+ addfron(a, b->s1);
+ for (a=b; !sdom(a, b->s2); a=a->idom)
+ addfron(a, b->s2);
}
}