diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-08-16 19:18:40 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-15 23:01:31 -0400 |
commit | 5668e93147563c824e693255de5e58fdc398a36b (patch) | |
tree | a2a5e9e99bedd60a07595f9c31012fe00e30f825 /lisc/rega.c | |
parent | c62b1754424046fea6abe3413f736a9483fa22a7 (diff) | |
download | roux-5668e93147563c824e693255de5e58fdc398a36b.tar.gz |
refine the clobber code
It could very well be that the temporary we assign already got assigned to the right register! Good things happen.
Diffstat (limited to 'lisc/rega.c')
-rw-r--r-- | lisc/rega.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lisc/rega.c b/lisc/rega.c index 53807d4..f571011 100644 --- a/lisc/rega.c +++ b/lisc/rega.c @@ -233,7 +233,7 @@ dopm(Blk *b, Ins *i, RMap *m) else if (isreg(i->arg[0])) for (;; i--) { r = RBASE(i->arg[0].val); - if (BGET(m->b, r)) { + if (BGET(m->b, r) && rfind(m, i->to.val) != r) { for (n=0; m->r[n] != r; n++) assert(n+1 < m->n); t = m->t[n]; |