diff options
| author | 2026-02-28 20:38:55 +0100 | |
|---|---|---|
| committer | 2026-02-28 20:38:55 +0100 | |
| commit | f06da11d8524a9eb7fe984171d4462cef8eac2e6 (patch) | |
| tree | 0050bede4ec0e9939e4a5f98be089a539d5810d2 /x86_64/emit.c | |
| parent | 3d1efdcc77de5ce8f3279bd22b0a510a699229ea (diff) | |
ir: make address ref hash table resizable
Would hit the limit on very large functions (thanks csmith).
Diffstat (limited to 'x86_64/emit.c')
| -rw-r--r-- | x86_64/emit.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/x86_64/emit.c b/x86_64/emit.c index e54b7dd..5dbbed1 100644 --- a/x86_64/emit.c +++ b/x86_64/emit.c @@ -127,7 +127,7 @@ mkmemoper(union ref r) assert(wop.t == OREG); return mkoper(OMEM, .base = wop.reg, .index = NOINDEX); } else if (r.t == RADDR) { - const struct addr *addr = &addrht[r.i]; + const struct addr *addr = &addrtab.p[r.i]; assert(addr->shift <= 3); if (isaddrcon(addr->base,0)) { return mkoper(OSYM, .con = addr->base.i, @@ -835,7 +835,7 @@ gencopy(uchar **pcode, enum irclass cls, struct block *blk, int curi, struct ope if (val.t == RADDR) { /* this is a LEA, but maybe it can be lowered to a 2-address instruction, * which may clobber flags */ - const struct addr *addr = &addrht[val.i]; + const struct addr *addr = &addrtab.p[val.i]; if (flagslivep(blk, curi)) goto Lea; if (addr->base.t != RREG) goto Lea; if (addr->base.bits && dst.reg == mkregoper(addr->base).reg) { /* base = dst */ |