diff options
| author | 2023-06-13 12:02:28 +0200 | |
|---|---|---|
| committer | 2023-06-13 12:02:28 +0200 | |
| commit | de5aa052f234693698fa27564d12958df3fa433e (patch) | |
| tree | 837ed316bc13fe8063dde85e3b075c9357202297 /amd64/isel.c | |
| parent | 3e5c11563f8cb7c843c71a0f761e5b644f39db46 (diff) | |
use a hashtable for addr refs
Diffstat (limited to 'amd64/isel.c')
| -rw-r--r-- | amd64/isel.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/amd64/isel.c b/amd64/isel.c index 3734143..469c56d 100644 --- a/amd64/isel.c +++ b/amd64/isel.c @@ -86,7 +86,7 @@ aadd(struct addr *addr, union ref r, bool rec) if (!ascale(addr, ins->l, ins->r)) return 0; ins->skip = 1; } else if (!rec && ins->op == Ocopy && ins->l.t == RMORE) { - struct addr save = *addr, *addr2 = &addrtab.p[ins->l.i]; + struct addr save = *addr, *addr2 = &addrht[ins->l.i]; if ((!addr2->base.t || aadd(addr, addr2->base, 1)) && aadd(addr, mkintcon(KI4, addr2->disp), 1) && (!addr2->index.t || ascale(addr, addr2->index, mkref(RICON, addr2->shift)))) @@ -121,8 +121,7 @@ fuseaddr(struct function *fn, union ref *r) if (!aadd(&addr, *r, 0)) return 0; - vpush(&addrtab, addr); - *r = mkref(RMORE, addrtab.n-1); + *r = mkaddr(addr); return 1; } |