diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-08-13 16:10:54 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-15 23:01:31 -0400 |
commit | 5fc8104e00187335411e35ec951bef53562c8fcd (patch) | |
tree | b4f26312a5eef7062c3aa8501a6a8f6efe77a675 /lisc/isel.c | |
parent | 78bf28f56e7dcdd89efba5c69bd90ed858658162 (diff) | |
download | roux-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.c | 9 |
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: |