aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-12-11 10:06:18 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-12-11 10:06:18 +0000
commitfb01d970c404ce167315c13e59a42b6c60f86569 (patch)
tree1d5ee09121a1c4994864ab34fef775697470df53
parent2ea54b81da0e6f24047b8974aa0c3fa18b3cdeae (diff)
downloadgcc-fb01d970c404ce167315c13e59a42b6c60f86569.zip
gcc-fb01d970c404ce167315c13e59a42b6c60f86569.tar.gz
gcc-fb01d970c404ce167315c13e59a42b6c60f86569.tar.bz2
ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long double' arguments.
* src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long double' arguments. From-SVN: r155152
-rw-r--r--libffi/ChangeLog5
-rw-r--r--libffi/src/sparc/ffi.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 8f28614..517ac4ef 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,5 +1,10 @@
2009-12-11 Eric Botcazou <ebotcazou@adacore.com>
+ * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
+ double' arguments.
+
+2009-12-11 Eric Botcazou <ebotcazou@adacore.com>
+
* testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
2009-12-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
diff --git a/libffi/src/sparc/ffi.c b/libffi/src/sparc/ffi.c
index 3b73f0c..1d01f59 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