From 2e4d5123544b86ec13e166dc94da43c850a588f2 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 20 Jun 2023 22:31:40 +0200 Subject: amd64: fix aggregate return in regs --- amd64/sysv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/amd64/sysv.c b/amd64/sysv.c index 8c95388..9c7bc15 100644 --- a/amd64/sysv.c +++ b/amd64/sysv.c @@ -120,12 +120,12 @@ abiret(short r[2], uchar cls[2], int *ni, union irtype typ) return 0; } assert(ret <= 2); - for (int i = 0; i < ret; ++i) { + for (int i = 0, ni = 0, nf = 0; i < ret; ++i) { assert(cls[i]); if (cls[i] == KF8) /* SSE (XMM0, XMM1) */ - r[i] = XMM0 + i; + r[i] = XMM0 + nf++; else if (cls[i] == KI8) /* INTEGER (RAX, RDX) */ - r[i] = i == 0 ? RAX : RDX; + r[i] = ni++ == 0 ? RAX : RDX; else assert(0); } return ret; -- cgit v1.2.3