qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

commit 059d378b9d4115061647b8efae95b3a7dc54abe2
parent fb838ce09547bc85da10dd447851536867e6f9a9
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date:   Thu,  4 Feb 2016 12:19:55 -0500

fix hinting bug in spiller

We have to first free the output register of an instruction
before setting the interference hints for inregs temporaries.

Diffstat:
Mlisc/spill.c | 6+++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisc/spill.c b/lisc/spill.c @@ -478,9 +478,6 @@ spill(Fn *fn) i->arg[n] = slot(t); } } - r = v.t[0] & (BIT(Tmp0)-1); - if (r) - sethint(&v, r); reloads(&u, &v); if (!req(i->to, R)) { t = i->to.val; @@ -488,6 +485,9 @@ spill(Fn *fn) BCLR(v, t); } emiti(*i); + r = v.t[0] & (BIT(Tmp0)-1); + if (r) + sethint(&v, r); } assert(!r || b==fn->start);