1

I'm attempting to compile some code using VC11 built Clang but I get the result below. Preferably I would like to enable SSE4 (though I really just want my code to compile at all without errors) but none of the arguments I've tried have changed the error result. The code is nothing special, just an exported function and includes for map and vector. Thanks a lot in advance for any assistance.

C:\Program Files (x86)\LLVM\vs11\bin\Debug>clang++ -march=corei7 -mavx -mpclmul -msse4 -std=c++11 -c -fms-compatibility -fms-extensions -v -o simple.o simple.cpp 
clang version 3.4 (trunk)
Target: i686-pc-win32
Thread model: posix
 "C:/Program Files (x86)/LLVM/vs11/bin/Debug/clang++.exe" -cc1 -triple i686-pc-win32 -emit-obj -mrelax-all -disable-free -main-file-name simple.cpp -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu corei7 -target-feature +avx -target-feature +pclmul -target-feature +sse4 -v -coverage-file simple.o -resource-dir "C:/Program Files (x86)/LLVM/vs11/bin/Debug\\..\\lib\\clang\\3.4" -internal-isystem "C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include" -internal-isystem "C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\8.0\\\\include" -std=c++11 -fdeprecated-macro -ferror-limit 19 -fmessage-length 150 -mstackrealign -fms-extensions -fms-compatibility -fmsc-version=1300 -fdelayed-template-parsing -fobjc-runtime=gcc -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -backend-option -vectorize-loops -o simple.o -x c++ simple.cpp
clang -cc1 version 3.4 based upon LLVM 3.4svn default target i686-pc-win32
#include "..." search starts here:
#include <...> search starts here:
 C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include
 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
 C:\Program Files (x86)\Windows Kits\8.0\\include
End of search list.
In file included from simple.cpp:2:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0:942:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:27:
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\ammintrin.h:28:2: error: "SSE4A instruction set not enabled"
#error "SSE4A instruction set not enabled"
 ^
In file included from simple.cpp:2:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0:942:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:527:20: error: expected unqualified-id
__MACHINEX86(__m64 _m_pshufw(__m64, int))
                   ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\xmmintrin.h:986:19: note: expanded from macro '_m_pshufw'
#define _m_pshufw _mm_shuffle_pi16
                  ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\xmmintrin.h:749:32: note: expanded from macro '_mm_shuffle_pi16'
#define _mm_shuffle_pi16(a, n) __extension__ ({ \
                               ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:582:26: error: expected unqualified-id
__MACHINEX86_X64(__m128i _mm_alignr_epi8(__m128i, __m128i, int))
                         ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\tmmintrin.h:69:34: note: expanded from macro '_mm_alignr_epi8'
#define _mm_alignr_epi8(a, b, n) __extension__ ({ \
                                 ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:583:24: error: expected unqualified-id
__MACHINEX86_X64(__m64 _mm_alignr_pi8(__m64, __m64, int))
                       ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\tmmintrin.h:74:33: note: expanded from macro '_mm_alignr_pi8'
#define _mm_alignr_pi8(a, b, n) __extension__ ({ \
                                ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:592:26: error: expected unqualified-id
__MACHINEX86_X64(__m128i _mm_blend_epi16(__m128i, __m128i, int))
                         ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:110:36: note: expanded from macro '_mm_blend_epi16'
#define _mm_blend_epi16(V1, V2, M) __extension__ ({ \
                                   ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:593:26: error: expected unqualified-id
__MACHINEX86_X64(__m128d _mm_blend_pd(__m128d, __m128d, int))
                         ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:79:33: note: expanded from macro '_mm_blend_pd'
#define _mm_blend_pd(V1, V2, M) __extension__ ({ \
                                ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:594:25: error: expected unqualified-id
__MACHINEX86_X64(__m128 _mm_blend_ps(__m128, __m128, int))
                        ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:84:33: note: expanded from macro '_mm_blend_ps'
#define _mm_blend_ps(V1, V2, M) __extension__ ({ \
                                ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:607:22: error: redefinition of '__builtin_ia32_pcmpestria128' as different
      kind of symbol
__MACHINEX86_X64(int _mm_cmpestra(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:416:6: note: expanded from macro '_mm_cmpestra'
     __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:607:22: note: previous definition is here
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:416:6: note: expanded from macro '_mm_cmpestra'
     __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:607:22: error: expected expression
__MACHINEX86_X64(int _mm_cmpestra(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:416:38: note: expanded from macro '_mm_cmpestra'
     __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
                                     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:608:22: error: redefinition of '__builtin_ia32_pcmpestric128' as different
      kind of symbol
__MACHINEX86_X64(int _mm_cmpestrc(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:418:6: note: expanded from macro '_mm_cmpestrc'
     __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:608:22: note: previous definition is here
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:418:6: note: expanded from macro '_mm_cmpestrc'
     __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:608:22: error: expected expression
__MACHINEX86_X64(int _mm_cmpestrc(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:418:38: note: expanded from macro '_mm_cmpestrc'
     __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
                                     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:609:22: error: redefinition of '__builtin_ia32_pcmpestri128' as different kind
      of symbol
__MACHINEX86_X64(int _mm_cmpestri(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:401:6: note: expanded from macro '_mm_cmpestri'
     __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:609:22: note: previous definition is here
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:401:6: note: expanded from macro '_mm_cmpestri'
     __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:609:22: error: expected expression
__MACHINEX86_X64(int _mm_cmpestri(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:401:37: note: expanded from macro '_mm_cmpestri'
     __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
                                    ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:610:26: error: redefinition of '__builtin_ia32_pcmpestrm128' as different kind
      of symbol
__MACHINEX86_X64(__m128i _mm_cmpestrm(__m128i, int, __m128i, int, int))
                         ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:399:6: note: expanded from macro '_mm_cmpestrm'
     __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:610:26: note: previous definition is here
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:399:6: note: expanded from macro '_mm_cmpestrm'
     __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:610:26: error: expected expression
__MACHINEX86_X64(__m128i _mm_cmpestrm(__m128i, int, __m128i, int, int))
                         ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:399:37: note: expanded from macro '_mm_cmpestrm'
     __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
                                    ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:611:22: error: redefinition of '__builtin_ia32_pcmpestrio128' as different
      kind of symbol
__MACHINEX86_X64(int _mm_cmpestro(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:420:6: note: expanded from macro '_mm_cmpestro'
     __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:611:22: note: previous definition is here
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:420:6: note: expanded from macro '_mm_cmpestro'
     __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:611:22: error: expected expression
__MACHINEX86_X64(int _mm_cmpestro(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:420:38: note: expanded from macro '_mm_cmpestro'
     __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
                                     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:612:22: error: redefinition of '__builtin_ia32_pcmpestris128' as different
      kind of symbol
__MACHINEX86_X64(int _mm_cmpestrs(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:422:6: note: expanded from macro '_mm_cmpestrs'
     __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:612:22: note: previous definition is here
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:422:6: note: expanded from macro '_mm_cmpestrs'
     __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:612:22: error: expected expression
__MACHINEX86_X64(int _mm_cmpestrs(__m128i, int, __m128i, int, int))
                     ^
C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:422:38: note: expanded from macro '_mm_cmpestrs'
     __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
                                     ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
#define __MACHINE(X)        X;
                            ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
Griwes
  • 8,805
  • 2
  • 43
  • 70
user2380227
  • 267
  • 4
  • 14
  • Did you try looking at the lines near where the error occurred? Often there are comments to explain it. – Ben Voigt Jun 22 '13 at 04:24
  • Do realize that SSE4 refers to either SSE4.1/2 or SSE4a. They are not the same. – Mysticial Jun 22 '13 at 04:32
  • 2
    SSE4a is an AMD only extension. In your compile command line you have `+sse4`. Try changing that to `+sse4a` and or playing with `arch=native` or `arch=amdfam10` or something. I have not used clang. With GCC it's just `-msse4a` but if you read the manual/man pages of clang and search for `sse4a` maybe it will be clear. –  Jun 22 '13 at 05:47
  • 2
    Thanks for responding guys. I honestly don't know why Clang is trying to activate SSE4a considering I specified -march=corei7 and as you say, SSE4a is AMD only. I think I will need to take this to the clang mailing list. – user2380227 Jun 22 '13 at 05:54
  • 1
    `-march=corei7` looks kind of odd. I'm used to seeing `-march=native`, `-march=x86_64`, `-march=i686`, etc. Are you certain that's not `-mcpu=corei7` or `-mtune=corei7`? – jww Jul 27 '17 at 09:04
  • @jww Technically, either is valid, but as far as enabling features goes the OP is right: `-march=corei7` allows the generated code to use whatever features are available on `corei7` (and crash on incompatible processors), whereas `-mtune` optimizes for it but only allows architectural (usually x86-64-v1 or i686) features; `-mcpu` [is confusing](https://stackoverflow.com/a/42722790/1813349) and probably oughtn’t be used, but _on x86_ it’s a synonym for `-mtune`. – Alex Shpilkin Nov 26 '21 at 21:38

0 Answers0