diff options
| author | 2026-02-28 20:38:55 +0100 | |
|---|---|---|
| committer | 2026-02-28 20:38:55 +0100 | |
| commit | f06da11d8524a9eb7fe984171d4462cef8eac2e6 (patch) | |
| tree | 0050bede4ec0e9939e4a5f98be089a539d5810d2 /aarch64 | |
| parent | 3d1efdcc77de5ce8f3279bd22b0a510a699229ea (diff) | |
ir: make address ref hash table resizable
Would hit the limit on very large functions (thanks csmith).
Diffstat (limited to 'aarch64')
| -rw-r--r-- | aarch64/emit.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/aarch64/emit.c b/aarch64/emit.c index fdcb866..9fdcd83 100644 --- a/aarch64/emit.c +++ b/aarch64/emit.c @@ -54,7 +54,7 @@ mkmemoper(uint msiz, union ref r) } else if (isaddrcon(r,1)) { return mkoper(OSYM, .con = r.i,); } else if (r.t == RADDR) { - const struct addr *addr = &addrht[r.i]; + const struct addr *addr = &addrtab.p[r.i]; assert(addr->shift <= 3 && (!addr->disp || !addr->index.bits)); if (isaddrcon(addr->base,0)) { assert(!addr->index.bits); @@ -552,7 +552,7 @@ gencopy(uchar **pcode, enum irclass cls, struct block *blk, int curi, struct ope else if (src.t == OIMM && src.imm == 0) Xfmov(pcode, cls, dst, REGZR); else assert(0); - } else if (isaddrcon(val,0) || (val.t == RADDR && isaddrcon(addrht[val.i].base,0))) { + } else if (isaddrcon(val,0) || (val.t == RADDR && isaddrcon(addrtab.p[val.i].base,0))) { if ((ccopt.pic || (contab.p[val.i].flag & SFUNC)) && !(contab.p[val.i].flag & SLOCAL)) { Xadrp(pcode, KPTR, dst, src); Xadd(pcode, KPTR, dst, dst, src); |