http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56033
--- Comment #7 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2013-04-22 14:22:15 UTC --- Following the recipe in comment #5, the following patch diff -up /opt/gcc/_gcc_clean/libffi/testsuite/libffi.call/cls_struct_va1.c /opt/gcc/work/libffi/testsuite/libffi.call/cls_struct_va1.c --- /opt/gcc/_gcc_clean/libffi/testsuite/libffi.call/cls_struct_va1.c 2013-01-05 19:58:34.000000000 +0100 +++ /opt/gcc/work/libffi/testsuite/libffi.call/cls_struct_va1.c 2013-04-22 15:16:30.000000000 +0200 @@ -35,7 +35,7 @@ test_fn (ffi_cif* cif __UNUSED__, void* printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b, l1.a, l1.b, l1.c, l1.d, l1.e, s2.a, s2.b); - * (int*) resp = 42; + * (ffi_arg*) resp = 42; } int diff -up /opt/gcc/_gcc_clean/libffi/testsuite/libffi.call/va_1.c /opt/gcc/work/libffi/testsuite/libffi.call/va_1.c --- /opt/gcc/_gcc_clean/libffi/testsuite/libffi.call/va_1.c 2013-01-17 19:52:24.000000000 +0100 +++ /opt/gcc/work/libffi/testsuite/libffi.call/va_1.c 2013-04-22 15:27:35.000000000 +0200 @@ -94,7 +94,7 @@ main (void) struct large_tag l1; int n; - int res; + ffi_arg res; unsigned char uc; signed char sc; diff -up /opt/gcc/_gcc_clean/libffi/testsuite/libffi.call/va_struct1.c /opt/gcc/work/libffi/testsuite/libffi.call/va_struct1.c --- /opt/gcc/_gcc_clean/libffi/testsuite/libffi.call/va_struct1.c 2013-01-05 19:58:34.000000000 +0100 +++ /opt/gcc/work/libffi/testsuite/libffi.call/va_struct1.c 2013-04-22 15:26:27.000000000 +0200 @@ -61,7 +61,7 @@ main (void) struct large_tag l1; int n; - int res; + ffi_arg res; s_type.size = 0; s_type.alignment = 0; fixes the corresponding failures. Note that I did not find how to apply the recipe to libffi.call/cls_uint_va.c.