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.