From de5aa052f234693698fa27564d12958df3fa433e Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 13 Jun 2023 12:02:28 +0200 Subject: use a hashtable for addr refs --- regalloc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'regalloc.c') diff --git a/regalloc.c b/regalloc.c index bf7bac6..b90940f 100644 --- a/regalloc.c +++ b/regalloc.c @@ -130,9 +130,10 @@ use(struct rega *ra, struct block *blk, int curi, enum op op, int hint, union re int excl = other.t == RREG ? other.i : -1; if (ref->t == RMORE) { - struct addr *addr = &addrtab.p[ref->i]; - if (addr->base.t) use(ra, blk, curi, 0, hint, &addr->base, addr->index); - if (addr->index.t) use(ra, blk, curi, 0, hint, &addr->index, NOREF); + struct addr addr = addrht[ref->i]; + if (addr.base.t) use(ra, blk, curi, 0, hint, &addr.base, addr.index); + if (addr.index.t) use(ra, blk, curi, 0, hint, &addr.index, NOREF); + *ref = mkaddr(addr); return; } else if (ref->t == RREG) { forcetake(ra, ref->i, *ref, blk, curi); -- cgit v1.2.3