From c221d0e8fd6fd323adffe92ca86fe294c42dea5e Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Fri, 11 Dec 2009 10:06:18 +0000 Subject: [PATCH] * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long double' arguments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155152 138bc75d-0d04-0410-961f-82ee72b054a4 --- libffi/ChangeLog | 5 +++++ libffi/src/sparc/ffi.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 8f2861400ce..517ac4eff63 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,5 +1,10 @@ 2009-12-11 Eric Botcazou + * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long + double' arguments. + +2009-12-11 Eric Botcazou + * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10. 2009-12-10 Rainer Orth diff --git a/libffi/src/sparc/ffi.c b/libffi/src/sparc/ffi.c index 3b73f0c4775..1d01f59ec23 100644 --- a/libffi/src/sparc/ffi.c +++ b/libffi/src/sparc/ffi.c @@ -599,6 +599,11 @@ ffi_closure_sparc_inner_v9(ffi_closure *closure, /* Right-justify. */ argn += ALIGN(arg_types[i]->size, FFI_SIZEOF_ARG) / FFI_SIZEOF_ARG; + /* Align on a 16-byte boundary. */ +#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE + if (arg_types[i]->type == FFI_TYPE_LONGDOUBLE && (argn % 2) != 0) + argn++; +#endif if (i < fp_slot_max && (arg_types[i]->type == FFI_TYPE_FLOAT || arg_types[i]->type == FFI_TYPE_DOUBLE -- 2.11.0