diff options
Diffstat (limited to 'lisc/rega.c')
-rw-r--r-- | lisc/rega.c | 3 |
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; |