From 9b2823a9f4d5ccb6ca50ee664ee67623147473db Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Thu, 16 Jul 2015 03:10:57 -0400 Subject: simplify liveness --- lisc/live.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'lisc') diff --git a/lisc/live.c b/lisc/live.c index 56dda71..4d37f72 100644 --- a/lisc/live.c +++ b/lisc/live.c @@ -1,9 +1,10 @@ #include "lisc.h" -static inline int -issym(Ref r) +static inline void +symadd(Bits *b, Ref r) { - return !req(r, R) && r.type == RSym; + if (!req(r, R) && r.type == RSym) + BSET(*b, r.val); } /* liveness analysis @@ -31,20 +32,15 @@ filllive(Fn *f) u = &use[b->id]; for (p=b->phi; p; p=p->link) { for (a=0; anarg; a++) - if (issym(p->arg[a])) - BSET(p->blk[a]->out, p->arg[a].val); - BSET(*k, p->to.val); + symadd(&p->blk[a]->out, p->arg[a]); + symadd(k, p->to); } for (i=b->ins; i-b->ins < b->nins; i++) { - if (issym(i->to)) - BSET(*k, i->to.val); - if (issym(i->arg[0])) - BSET(*u, i->arg[0].val); - if (issym(i->arg[1])) - BSET(*u, i->arg[1].val); + symadd(k, i->to); + symadd(u, i->arg[0]); + symadd(u, i->arg[1]); } - if (issym(b->jmp.arg)) - BSET(*u, b->jmp.arg.val); + symadd(u, b->jmp.arg); } Again: chg = 0; -- cgit 1.4.1