aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--amd64/sysv.c6
1 files 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;