------- Comment #18 from hjl dot tools at gmail dot com 2010-07-16 13:31 ------- The problem isn't new:
[...@gnu-6 case3]$ cat x.c #include "x.h" void foo (long double x, struct A y, long double z) { int i; struct A a = { { 0, 1, 2, 3 } }; if (x != 8.0L || z != 8.0L) __builtin_abort (); if (__builtin_memcmp (&a, &y, sizeof (a))) __builtin_abort (); } [...@gnu-6 case3]$ cat x.h struct A { float V4SF __attribute__ ((vector_size (16))); }; void foo (long double, struct A, long double); [...@gnu-6 case3]$ cat main.c #include "x.h" int main (void) { struct A a = { { 0, 1, 2, 3 } }; foo (8.0L, a, 8.0L); return 0; } [...@gnu-6 case3]$ make CC=gcc gcc -m32 -g -O -msse2 -c -o x.o x.c gcc -m32 -g -O -mno-sse -c -o main.o main.c gcc -m32 -g -O -o x x.o main.o ./x make: *** [all] Aborted [...@gnu-6 case3]$ -- hjl dot tools at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|-mavx changes ABI |-msse/-mavx change ABI http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44948