summary refs log tree commit diff
path: root/lisc/ssa.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-07-15 13:23:37 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:28 -0400
commit7e53000a1fce22a89bdaa8b44df9ea23a4b8ce3e (patch)
tree0afa9b4cb1c3bb4dea994269e35197a5c1f75cad /lisc/ssa.c
parent60f60425cd1cd307cbf6012eb6d04115533ca094 (diff)
downloadroux-7e53000a1fce22a89bdaa8b44df9ea23a4b8ce3e.tar.gz
use argument array for all instructions
Diffstat (limited to 'lisc/ssa.c')
-rw-r--r--lisc/ssa.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/lisc/ssa.c b/lisc/ssa.c
index 637ac80..c08d6b1 100644
--- a/lisc/ssa.c
+++ b/lisc/ssa.c
@@ -156,10 +156,10 @@ ssafix(Fn *f, int t)
 			}
 		for (i=b->ins; i-b->ins < b->nins; i++) {
 			if (t1) {
-				if (req(i->l, rt))
-					i->l = SYM(t1);
-				if (req(i->r, rt))
-					i->r = SYM(t1);
+				if (req(i->arg[0], rt))
+					i->arg[0] = SYM(t1);
+				if (req(i->arg[1], rt))
+					i->arg[1] = SYM(t1);
 			}
 			if (req(i->to, rt)) {
 				t1 = f->ntmp++;
@@ -177,10 +177,10 @@ ssafix(Fn *f, int t)
 				if (req(p->arg[n], rt))
 					p->arg[n] = botdef(p->blk[n], f);
 		for (i=b->ins; i-b->ins < b->nins; i++) {
-			if (req(i->l, rt))
-				i->l = topdef(b, f);
-			if (req(i->r, rt))
-				i->r = topdef(b, f);
+			if (req(i->arg[0], rt))
+				i->arg[0] = topdef(b, f);
+			if (req(i->arg[1], rt))
+				i->arg[1] = topdef(b, f);
 		}
 		if (req(b->jmp.arg, rt))
 			b->jmp.arg = topdef(b, f);
@@ -190,6 +190,7 @@ ssafix(Fn *f, int t)
 	if (!f->sym)
 		abort();
 	for (t1=t0; t0<f->ntmp; t0++) {
+		f->sym[t0].type = STmp;
 		snprintf(f->sym[t0].name, NString, "%s_%d",
 			f->sym[t].name, t0-t1);
 	}