Closed
Description
Bugzilla Link | 12736 |
Resolution | WORKSFORME |
Resolved on | Jul 09, 2013 13:36 |
Version | trunk |
OS | All |
Blocks | llvm/llvm-bugzilla-archive#13707 |
Reporter | LLVM Bugzilla Contributor |
CC | @AaronBallman,@tritao |
Extended Description
Test which demonstrates this, using clang version 3.2 (trunk 156145)
cat > test-emmintrin.c << EOF
#include <emmintrin.h>
EOF
clang -c test-emmintrin.c -fms-compatibility -msse2
... results in errors like this:
/opt/clang-3.2svn/bin/../lib/clang/3.2/include/emmintrin.h:134:20: error:
invalid conversion between vector type '__v4si' and scalar type '__m128d'
(aka 'double')
return (__m128d)((__v4si)a & (__v4si)b);
^~~~~~~~~
From <emmintrin.h>:
typedef double __m128d attribute((vector_size(16)));
It looks like newer versions of Clang ignore gcc-style vector attributes when using the -fms-compatibility flag. This very well might be the intended behavior - but it seems like such a simple test case shouldn't fail to compile.
This behavior doesn't occur with clang version 3.1 (trunk 145140).