summary refs log tree commit diff
path: root/lisc
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-07-21 05:50:45 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:28 -0400
commit226bbb5b71174bf997c7ac91df73bcffa5b9c46d (patch)
tree30d0a08ab038f33fbcea34631d7a167b85635558 /lisc
parent73add5daaef5f6b764ac2ddf260b27f86d12e1af (diff)
downloadroux-226bbb5b71174bf997c7ac91df73bcffa5b9c46d.tar.gz
fix some instruction emitting code
Diffstat (limited to 'lisc')
-rw-r--r--lisc/isel.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/lisc/isel.c b/lisc/isel.c
index eff8d93..60cc2d5 100644
--- a/lisc/isel.c
+++ b/lisc/isel.c
@@ -26,7 +26,7 @@ emit(short op, Ref to, Ref arg0, Ref arg1)
 {
 	if (curi == insb)
 		diag("isel: too many instructions");
-	*curi-- = (Ins){op, to, {arg0, arg1}};
+	*--curi = (Ins){op, to, {arg0, arg1}};
 }
 
 static void
@@ -84,12 +84,11 @@ isel(Fn *fn)
 
 	t0 = fn->ntmp;
 	for (b=fn->start; b; b=b->link) {
-		curi = &insb[NIns-1];
+		curi = &insb[NIns];
 		for (i=&b->ins[b->nins]; i!=b->ins;) {
 			sel(--i, fn);
 		}
-		nins = &insb[NIns-1] - curi;
-		curi++;
+		nins = &insb[NIns] - curi;
 		free(b->ins);
 		b->ins = alloc(nins * sizeof b->ins[0]);
 		memcpy(b->ins, curi, nins * sizeof b->ins[0]);