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 | |
| 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.
| -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]; |
