From 059d378b9d4115061647b8efae95b3a7dc54abe2 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Thu, 4 Feb 2016 12:19:55 -0500 Subject: fix hinting bug in spiller We have to first free the output register of an instruction before setting the interference hints for inregs temporaries. --- lisc/spill.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lisc/spill.c') diff --git a/lisc/spill.c b/lisc/spill.c index aaec562..ea89fd9 100644 --- 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); -- cgit 1.4.1