From 8c0574eaa16248260fbd615e7a6ef9fd87119189 Mon Sep 17 00:00:00 2001
From: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date: Fri, 13 Nov 2015 15:34:03 -0500
Subject: [PATCH] fix buggy phi deletion in copy()

---
 lisc/copy.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lisc/copy.c b/lisc/copy.c
index 9367e8d..c04f36a 100644
--- 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];