qbe

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

commit 5873a7dc1e805b601c49f607fcb11692e3b5e74a
parent 98c9cf29d337c4bc9aa483e8479c61584e0e09aa
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date:   Mon, 18 Apr 2016 13:42:56 -0400

make sure non-register temporaries get a slot

Inside the main instruction-processing loop, it is
taken care of by limit.  However at block boundaries
we are doing fancy bitset operations without calling
limit.

Diffstat:
Mspill.c | 3+++
1 file changed, 3 insertions(+), 0 deletions(-)

diff --git a/spill.c b/spill.c @@ -391,6 +391,9 @@ spill(Fn *fn) r = retregs(b->jmp.arg, 0); v->t[0] |= r; } + for (t=Tmp0; bsiter(b->out, &t); t++) + if (!bshas(v, t)) + slot(t); bscopy(b->out, v); /* 2. process the block instructions */