From 8b79b61ae78c91c069447331ed64d400187bdd77 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 8 Apr 2026 10:26:18 +0200 Subject: 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. --- src/ir_stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/ir_stack.c') diff --git a/src/ir_stack.c b/src/ir_stack.c index ff49805..a9acc61 100644 --- a/src/ir_stack.c +++ b/src/ir_stack.c @@ -19,7 +19,7 @@ lowerstack(Function *fn) fn->stksiz = alignup(fn->stksiz, 1 << alignlog2); if (fn->stksiz > (1<<20)-1) error(NULL, "'%s' stack frame too big", fn->name); *ins = mkinstr0(Onop,0); - replcuses(mkref(RTMP, t), mkref(RSTACK, fn->stksiz)); + replcuses(mkref(RTMP, t), mkref(RSTACK, fn->stksiz-siz)); } } } while ((blk = blk->lnext) != fn->entry); -- cgit v1.2.3