http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59794
Bug ID: 59794 Summary: i386 backend fails to detect SSE return value Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: ubizjak at gmail dot com [hjl@gnu-6 gcc]$ cat /tmp/f.i typedef int __v4si __attribute__ ((__vector_size__ (16))); typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); __m128i f1(void) { return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 }; } [hjl@gnu-6 gcc]$ gcc -S -O /tmp/f.i -mno-sse -m32 [hjl@gnu-6 gcc]$ gcc -S -O /tmp/f.i -mno-sse /tmp/f.i: In function ‘f1’: /tmp/f.i:6:1: error: SSE register return with SSE disabled { ^ [hjl@gnu-6 gcc]$ Both -m32 and -m64 should issue the same warning.