https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87812

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
Without AVX, GCC treats

typedef qi __attribute__((vector_size (32))) v32qi;

as a type of 32 bytes, which is passed in memory.  Clang does

# clang -S -msse2 x.c -O2
...
        movaps  .LCPI0_0(%rip), %xmm0   # xmm0 =
[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]
        movaps  %xmm0, %xmm1
        retq
# clang -S -msse2 x.c -O2 -m32
...
        movaps  .LCPI0_0, %xmm0         # xmm0 =
[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]
        movaps  %xmm0, %xmm1
        retl

They look very odd to me.  You either pass it as a vector or you don't.
You can't have it both ways.

Reply via email to