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:
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 */