diff options
| author | 2025-11-24 08:35:40 +0100 | |
|---|---|---|
| committer | 2025-11-24 08:37:06 +0100 | |
| commit | 8ca8776f3ad526745d85adac942f0e2b6951c5c8 (patch) | |
| tree | e4a444a4f380295ad4a09b658415593f3866b9fd | |
| parent | d0dde5bc533b321ad35113d45c6b167d8f9e9ffc (diff) | |
isel: loadstoreaddr don't fuseaddr as much
| -rw-r--r-- | amd64/isel.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/amd64/isel.c b/amd64/isel.c index 51a58db..98585fa 100644 --- a/amd64/isel.c +++ b/amd64/isel.c @@ -339,10 +339,12 @@ loadstoreaddr(struct block *blk, union ref *r, int *curi) { if (isimm32(*r)) { *r = mkaddr((struct addr){.base = *r}); - } else if (!fuseaddr(r, blk, curi) && r->t != RTMP && r->t != RREG) { - *r = insertinstr(blk, (*curi)++, mkinstr(Ocopy, KPTR, *r)); - } else { + } else if (isaddrcon(*r, 0)) { picfixsym(r, blk, curi); + } else if (r->t == RTMP) { + if (addarg4addrp(*r)) fuseaddr(r, blk, curi); + } else if (r->t != RREG) { + *r = insertinstr(blk, (*curi)++, mkinstr(Ocopy, KPTR, *r)); } } |