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/t_x86-64_sysv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/t_x86-64_sysv.c') diff --git a/src/t_x86-64_sysv.c b/src/t_x86-64_sysv.c index 96f40d6..2404a86 100644 --- a/src/t_x86-64_sysv.c +++ b/src/t_x86-64_sysv.c @@ -200,7 +200,7 @@ vastart(Function *fn, Block *blk, int *curi) int i = *curi + 1; insertinstr(blk, i++, mkinstr2(Ostorei64, 0, dst, rsave)); /* set ap->overflow_arg_area */ - src = insertinstr(blk, i++, mkinstr2(Oadd, KPTR, mkref(RREG, RBP), mkref(RICON, 16+stk0))); + src = insertinstr(blk, i++, mkinstr1(Ocopy, KPTR, mkref(RSTACK, -stk0-8))); dst = insertinstr(blk, i++, mkinstr2(Oadd, KPTR, ap, mkref(RICON, 8))); insertinstr(blk, i++, mkinstr2(Ostorei64, 0, dst, src)); /* set ap->gp_offset */ -- cgit v1.2.3