diff --git a/src/sparc/v8.S b/src/sparc/v8.S index ba3cdac9..6bf7ac05 100644 --- a/src/sparc/v8.S +++ b/src/sparc/v8.S @@ -242,6 +242,10 @@ ffi_closure_v8: be,a done1 ldd [%fp-8], %i0 + cmp %o0, FFI_TYPE_UINT64 + be,a done1 + ldd [%fp-8], %i0 + ld [%fp-8], %i0 done1: jmp %i7+8 diff --git a/testsuite/libffi.call/ffitest.h b/testsuite/libffi.call/ffitest.h index 830fcc73..136a7a6b 100644 --- a/testsuite/libffi.call/ffitest.h +++ b/testsuite/libffi.call/ffitest.h @@ -127,3 +127,6 @@ #define PRId64 "I64d" #endif +#ifndef PRIuPTR +#define PRIuPTR "u" +#endif diff --git a/testsuite/libffi.call/many2.c b/testsuite/libffi.call/many2.c index 10771592..98eac601 100644 --- a/testsuite/libffi.call/many2.c +++ b/testsuite/libffi.call/many2.c @@ -12,7 +12,10 @@ typedef unsigned char u8; -__attribute__((noinline)) uint8_t +#ifdef __GNUC__ +__attribute__((noinline)) +#endif +uint8_t foo (uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t e, uint8_t f, uint8_t g) { diff --git a/testsuite/libffi.call/negint.c b/testsuite/libffi.call/negint.c index 31681130..6e2f26fc 100644 --- a/testsuite/libffi.call/negint.c +++ b/testsuite/libffi.call/negint.c @@ -5,7 +5,6 @@ Originator: From the original ffitest.c */ /* { dg-do run } */ -/* { dg-options -O2 } */ #include "ffitest.h"