diff options
| author | 2026-04-08 10:26:18 +0200 | |
|---|---|---|
| committer | 2026-04-08 10:26:18 +0200 | |
| commit | 8b79b61ae78c91c069447331ed64d400187bdd77 (patch) | |
| tree | 57a5d9b04c1514ac59c18286cb08393ecd0b1e69 /src/ir_regalloc.c | |
| parent | b8dea129488959adeadc2e444d769f2a2ac709d8 (diff) | |
Implement basic aarch64 struct arg passing ABI
- Missing: vaargs, >2 member HFAs
- Reworked the way stack allocation references are lowered. Now RSTACK
persists throughout all passes until emit. This allows deferring stack
frame layouting until the end in a less messy way than before, which
was emiting frame-pointer relative addresses @ isel time and patching them up
later in emit to account for actual stack frame layout.
Diffstat (limited to 'src/ir_regalloc.c')
| -rw-r--r-- | src/ir_regalloc.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/ir_regalloc.c b/src/ir_regalloc.c index 31f03c2..26b90a6 100644 --- a/src/ir_regalloc.c +++ b/src/ir_regalloc.c @@ -111,9 +111,7 @@ typedef struct RegAlloc { stktop; } RegAlloc; -#define stkslotref(fn, off) \ - mkaddr((IRAddr){.base = mkref(RREG, mctarg->bpr), \ - .disp = -(fn)->stksiz - 8 - (off)}) +#define stkslotref(fn, off) mkref(RSTACK, (fn)->stksiz + (off)) /* Parallel moves algorithm from QBE * <https://c9x.me/git/qbe.git/tree/rega.c?id=e493a7f23352f51acc0a1e12284ab19d7894488a#n201> */ |