summary refs log tree commit diff
path: root/lisc
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-08-19 15:16:14 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:32 -0400
commit328cdc448ca7ab6dd7efbf595472a0d49da3651a (patch)
tree1387247d073eb29abe1f124418b5bff9e1999dc9 /lisc
parentce82136e960ae2c152b1b925c1ebbb62cbc29e41 (diff)
downloadroux-328cdc448ca7ab6dd7efbf595472a0d49da3651a.tar.gz
alloc16 comes for free, iiuc the abi
Diffstat (limited to 'lisc')
-rw-r--r--lisc/isel.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/lisc/isel.c b/lisc/isel.c
index 91df7dc..dd70a57 100644
--- a/lisc/isel.c
+++ b/lisc/isel.c
@@ -234,7 +234,7 @@ Emit:
 		/* if this is not a fast alloc
 		 * we need to make sure
 		 * the stack remains aligned
-		 * (rsp + 8 = 0) mod 16
+		 * (rsp = 0) mod 16
 		 */
 		if (req(i.to, R))
 			break;
@@ -244,16 +244,14 @@ Emit:
 			if (val < 0 || val > INT32_MAX)
 				diag("isel: alloc too large");
 			emit(OAlloc, i.to, newcon(val, fn), R);
-		} else if (i.op < OAlloc1) {
+		} else {
 			/* r0 = (i.arg[0] + 15) & -16 */
 			r0 = newtmp(TLong, fn);
 			r1 = newtmp(TLong, fn);
 			emit(OAlloc, i.to, r0, R);
 			emit(OAnd, r0, r1, newcon(-16, fn));
 			emit(OAdd, r1, i.arg[0], newcon(15, fn));
-		} else
-			/* todo, support it! */
-			diag("isel: unsupported alloc alignment");
+		}
 		break;
 	default:
 		if (OCmp <= i.op && i.op <= OCmp1) {