bash-3.2$ cat /tmp/u1.i typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
union sse2 { float i; __m128i x; }; void foo2 (union sse2); void bar2 (union sse2 x) { foo2 (x); } bash-3.2$ gcc -S -O2 /tmp/u1.i -mno-sse bash-3.2$ gcc -S -O2 /tmp/u1.i -mno-sse -m32 bash-3.2$ cat /tmp/u2.i typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); void foo2 (__m128i); void bar2 (__m128i y, __m128i x) { foo2 (x); } bash-3.2$ gcc -S -O2 /tmp/u2.i -mno-sse I am expecting a warning here, like bash-3.2$ gcc -S -O2 /tmp/u2.i -mno-sse -m32 /tmp/u2.i: In function bar2: /tmp/u2.i:7: warning: SSE vector argument without SSE enabled changes the ABI bash-3.2$ -- Summary: No ABI warnings on __m128i when SSE is disabled Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39258