From 83ce80f3194bbf95c39764d075b070389c0f8522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Mon, 31 Jan 2022 09:21:53 +0000 Subject: [PATCH] powerpc64: fix handling of homogeneous float128 structs If there is a homogeneous struct with float128 members, they should be copied to vector register save area. The current code incorrectly copies only the value of the first member, not increasing the pointer with each iteration. Fix this. --- src/powerpc/ffi_linux64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/powerpc/ffi_linux64.c b/src/powerpc/ffi_linux64.c index 4d50878e4..3454dacd3 100644 --- a/src/powerpc/ffi_linux64.c +++ b/src/powerpc/ffi_linux64.c @@ -680,7 +680,7 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) { if (vecarg_count < NUM_VEC_ARG_REGISTERS64 && i < nfixedargs) - memcpy (vec_base.f128++, arg.f128, sizeof (float128)); + memcpy (vec_base.f128++, arg.f128++, sizeof (float128)); else memcpy (next_arg.f128, arg.f128++, sizeof (float128)); if (++next_arg.f128 == gpr_end.f128)