aboutsummaryrefslogtreecommitdiff
path: root/spill.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <[email protected]>2016-04-18 13:42:56 -0400
committerQuentin Carbonneaux <[email protected]>2016-04-18 13:44:41 -0400
commit5873a7dc1e805b601c49f607fcb11692e3b5e74a (patch)
treef95a657307803469d29e6e60d3f85e1c1094e7c4 /spill.c
parent98c9cf29d337c4bc9aa483e8479c61584e0e09aa (diff)
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 (limited to 'spill.c')
-rw-r--r--spill.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/spill.c b/spill.c
index f478557..77c4fbe 100644
--- 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 */