summary refs log tree commit diff
path: root/lisc/rega.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-08-16 19:18:40 -0400
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2015-09-15 23:01:31 -0400
commit5668e93147563c824e693255de5e58fdc398a36b (patch)
treea2a5e9e99bedd60a07595f9c31012fe00e30f825 /lisc/rega.c
parentc62b1754424046fea6abe3413f736a9483fa22a7 (diff)
downloadroux-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.c2
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];