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

Reply via email to