summary refs log tree commit diff
path: root/lisc/rega.c
diff options
context:
space:
mode:
Diffstat (limited to 'lisc/rega.c')
-rw-r--r--lisc/rega.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/lisc/rega.c b/lisc/rega.c
index f571011..6b29546 100644
--- a/lisc/rega.c
+++ b/lisc/rega.c
@@ -324,9 +324,10 @@ rega(Fn *fn)
 					radd(&cur, t, r);
 		for (x=0; x<2; x++)
 			for (t=Tmp0; t<fn->ntmp; t++)
-				if (x==1 || tmp[t].hint!=-1)
 				if (BGET(b->out, t))
 				if (!BGET(cur.b, t))
+				if (x == 1
+				|| ((r=tmp[t].hint) != -1 && !BGET(cur.b, r)))
 					ralloc(&cur, t);
 		/* process instructions */
 		end[n] = cur;