commit 8c0574eaa16248260fbd615e7a6ef9fd87119189
parent a670758b8735e3e857e013e05da23bf005f3bade
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date: Fri, 13 Nov 2015 15:34:03 -0500
fix buggy phi deletion in copy()
Diffstat:
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/lisc/copy.c b/lisc/copy.c
@@ -109,13 +109,11 @@ copy(Fn *fn)
}
}
for (b=fn->start; b; b=b->link) {
- for (pp=&b->phi; (p=*pp); pp=&p->link) {
- Again:
+ for (pp=&b->phi; (p=*pp);) {
r = cp[p->to.val];
if (!req(r, p->to)) {
*pp = p->link;
- p = *pp;
- goto Again;
+ continue;
}
for (a=0; a<p->narg; a++)
if (rtype(p->arg[a]) == RTmp) {
@@ -123,6 +121,7 @@ copy(Fn *fn)
assert(!req(r, R));
p->arg[a] = r;
}
+ pp=&p->link;
}
for (i=b->ins; i!=&b->ins[b->nins]; i++) {
r = cp[i->to.val];