[cfe-dev] Parsing VC++ headers with tool/libtooling

Reid Kleckner via cfe-dev cfe-dev at lists.llvm.org
Wed Oct 21 23:00:41 PDT 2015


This seems more like failure to prefer Clang's immintrin.h over MSVC's.
Getting that to work in right Clang tools is annoying.

Sent from phone
On Oct 21, 2015 7:27 PM, "Nico Weber via cfe-dev" <cfe-dev at lists.llvm.org>
wrote:

> You probably need to pass some combination of -fms-compatibility
> -fms-extensions -fdelayed-template-parsing and a MS abi triple to -target
> to be able to parse SDK headers. You can try running `clang-cl -c
> some_file.cc -###` to see which cc1 parameters clang-cl passes by default.
>
> Actually, looking at lib/Driver/Tools.cpp, it looks like the driver will
> use good defaults as long as the triple thinks
> that isWindowsMSVCEnvironment() is true. Try adding something like "-target
> x86_64-pc-windows-msvc18.0.0" to your flag, that's probably enough.
> Alternatively, you could also try passing "--driver-mode=cl " as first
> parameter, then the tool will behave like clang-cl in general (but it'll
> expect clang-cl flags, see bin/clang-cl /? for a list. -I and -D should
> work).
>
> Nico
>
>
>
> On Wed, Oct 21, 2015 at 6:11 PM, Daniel Dilts via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> I have a custom tool that uses libTooling.  I am running the tool on
>> Windows.  When I attempt to run the tool over my code I get many errors of
>> the following form:
>>
>> 2>  In file included from C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\vector:6:
>> 2>  In file included from C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\xmemory:6:
>> 2>  In file included from C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\xmemory0:1015:
>> 2>  In file included from C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\intrin.h:24:
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:764:28: error: invalid token in macro parameter
>> list
>> 2>  #define _mm256_loadu2_m128(/* float const* */ hiaddr, \
>> 2>                             ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:768:29: error: invalid token in macro parameter
>> list
>> 2>  #define _mm256_loadu2_m128d(/* double const* */ hiaddr, \
>> 2>                              ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:772:29: error: invalid token in macro parameter
>> list
>> 2>  #define _mm256_loadu2_m128i(/* __m128i const* */ hiaddr, \
>> 2>                              ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:782:29: error: invalid token in macro parameter
>> list
>> 2>  #define _mm256_storeu2_m128(/* float* */ hiaddr, /* float* */ loaddr,
>> \
>> 2>                              ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:790:30: error: invalid token in macro parameter
>> list
>> 2>  #define _mm256_storeu2_m128d(/* double* */ hiaddr, /* double* */
>> loaddr, \
>> 2>                               ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:798:30: error: invalid token in macro parameter
>> list
>> 2>  #define _mm256_storeu2_m128i(/* __m128i* */ hiaddr, /* __m128i* */
>> loaddr, \
>> 2>                               ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:1117:25: error: invalid token in macro
>> parameter list
>> 2>  #define _mm256_set_m128(/* __m128 */ hi, /* __m128 */ lo) \
>> 2>                          ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:1120:26: error: invalid token in macro
>> parameter list
>> 2>  #define _mm256_set_m128d(/* __m128d */ hi, /* __m128d */ lo) \
>> 2>                           ^
>> 2>  C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\include\immintrin.h:1123:26: error: invalid token in macro
>> parameter list
>> 2>  #define _mm256_set_m128i(/* __m128i */ hi, /* __m128i */ lo) \
>> 2>                           ^
>> 2>  9 errors generated.
>>
>> Is there some way to get my tool to handle this gracefully?  My
>> command-line for my tool looks like:
>> MyTool.exe -- -IC:/Path/To/Includes -DSOME_MACRO
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151021/f852d406/attachment.html>


More information about the cfe-dev mailing list