summary refs log tree commit diff
path: root/lisc/isel.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-08-13 16:10:54 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:31 -0400
commit5fc8104e00187335411e35ec951bef53562c8fcd (patch)
treeb4f26312a5eef7062c3aa8501a6a8f6efe77a675 /lisc/isel.c
parent78bf28f56e7dcdd89efba5c69bd90ed858658162 (diff)
downloadroux-5fc8104e00187335411e35ec951bef53562c8fcd.tar.gz
major lifting: get rid of RReg
I've been septic since I introduced it, this commit
proves that it costs more than it helps.  I've also fixed
a bad bug in rega() where I alloc'ed the wrong size for
internal arrays.  Enums now have names so I can use them
to cast in gdb to get the name corresponding to a constant.
Diffstat (limited to 'lisc/isel.c')
-rw-r--r--lisc/isel.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/lisc/isel.c b/lisc/isel.c
index 5b83081..a9e3ee2 100644
--- a/lisc/isel.c
+++ b/lisc/isel.c
@@ -122,12 +122,12 @@ sel(Ins i, Fn *fn)
 		default:
 			diag("isel: invalid division");
 		case TWord:
-			ra = REG(EAX);
-			rd = REG(EDX);
+			ra = TMP(EAX);
+			rd = TMP(EDX);
 			break;
 		case TLong:
-			ra = REG(RAX);
-			rd = REG(RDX);
+			ra = TMP(RAX);
+			rd = TMP(RDX);
 			break;
 		}
 		r0 = i.op == ODiv ? ra : rd;
@@ -230,6 +230,7 @@ flagi(Ins *i0, Ins *i)
 			return 0;
 		case OAdd:  /* flag-setting */
 		case OSub:
+		case OAnd:
 			return i;
 		case OCopy: /* flag-transparent */
 		case OStorel: