aboutsummaryrefslogtreecommitdiff
path: root/live.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <[email protected]>2016-04-01 10:06:58 -0400
committerQuentin Carbonneaux <[email protected]>2016-04-01 10:06:58 -0400
commit6a2c88054318290f4b4aeb6f24d710a3f99c6415 (patch)
tree0a4394c43ca4f0f3dee0dd5bace155871c6e7470 /live.c
parentbb0dc28eb8453e35fbfcd1e6ef73b0e6886ea401 (diff)
use bsiter in critical loop
Diffstat (limited to 'live.c')
-rw-r--r--live.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/live.c b/live.c
index 44806e1..c61e987 100644
--- a/live.c
+++ b/live.c
@@ -70,7 +70,8 @@ filllive(Fn *f)
{
Blk *b;
Ins *i;
- int k, t, m[2], n, chg, nlv[2];
+ int k, m[2], n, chg, nlv[2];
+ uint t;
short *phi;
BSet u[1], v[1];
Mem *ma;
@@ -102,11 +103,10 @@ Again:
memset(phi, 0, f->ntmp * sizeof phi[0]);
memset(nlv, 0, sizeof nlv);
bscopy(b->in, b->out);
- for (t=0; t<f->ntmp; t++)
- if (bshas(b->in, t)) {
- phifix(t, phi, f->tmp);
- nlv[KBASE(f->tmp[t].cls)]++;
- }
+ for (t=0; bsiter(b->in, &t); t++) {
+ phifix(t, phi, f->tmp);
+ nlv[KBASE(f->tmp[t].cls)]++;
+ }
if (rtype(b->jmp.arg) == RACall) {
assert(bscount(b->in) == 0 && nlv[0] == 0 && nlv[1] == 0);
b->in->t[0] |= retregs(b->jmp.arg, nlv);