Skip to content

-fms-compatibility results in compile errors when including <emmintrin.h> #13108

Closed
@llvmbot

Description

@llvmbot
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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillaclang:headersHeaders provided by Clang, e.g. for intrinsicsworksformeResolved as "works for me"

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions