aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ir_regalloc.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-04-08 10:26:18 +0200
committerlemon <lsof@mailbox.org>2026-04-08 10:26:18 +0200
commit8b79b61ae78c91c069447331ed64d400187bdd77 (patch)
tree57a5d9b04c1514ac59c18286cb08393ecd0b1e69 /src/ir_regalloc.c
parentb8dea129488959adeadc2e444d769f2a2ac709d8 (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.c4
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> */