[cfe-dev] Windows and Clang

Joshua Gerrard via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 3 04:20:05 PDT 2015

Forgot to add cfe-dev back in

---------- Forwarded message ----------
From: Joshua Gerrard <joshua.gerrard at roli.com>
Date: 3 September 2015 at 11:44
Subject: Re: [cfe-dev] Windows and Clang
To: Russell Wallace <russell.wallace at gmail.com>

Yes, that's pretty recent.

I *think* the compiler-rt stuff is needed because we pull information out
of clang whilst it's compiling apparently (I had to go and ask someone else
about this). I know that the project doesn't compile without it.

As for what's going wrong ...

- sometimes it crashes outright with nothing to give us an idea of why, the
diagnostics we get back are in a different order every time, even when the
number of threads is set to 1 in our project, and all other sorts of random
things that scream undefined behaviour with no clue as to where it is.

- Windows headers are throwing errors out, even though the MSVC
compatibility flags and such are set as follows:

        lo.MSVCCompat = true;
        lo.MSCompatibilityVersion = clang::LangOptions::MSVC2013;
        lo.MicrosoftExt = true;
        lo.AsmBlocks = true;

Thank you for showing your build process too, after looking at it, it's
slightly different from what I've got here so that might be a place to
start. I'll do that now!



On 3 September 2015 at 11:33, Russell Wallace <russell.wallace at gmail.com>

> I also just ran a test trying to compile my project with clang and link it
> with all the libraries that had been compiled with Microsoft C++:
> clang-cl -fms-compatibility-version=19 /J -I\llvm\build\include
> -I\llvm\include -I\mpir /MTd *.cpp \llvm\build\Debug\lib\*.lib
> \mpir\build.vc14\lib_mpir_core2\x64\Debug\mpir.lib
> And it all worked fine, even though a fair number of C++ features were
> used. To emphasise, this is linking C++ object files compiled with
> different compilers, something traditionally considered theoretically
> impossible, and it works! Exceptions are the main things I don't use,
> because they are still apparently a work in progress.
> On Thu, Sep 3, 2015 at 11:25 AM, Russell Wallace <
> russell.wallace at gmail.com> wrote:
>> On Thu, Sep 3, 2015 at 11:16 AM, Joshua Gerrard <joshua.gerrard at roli.com>
>> wrote:
>>> I'm using Visual Studio 2013 (just because we suppose it'll be better
>>> tested etc) with revision 245761 of clang, compiler-rt and llvm. I'm also
>>> using the ORC JIT engine to compile the C++ code.
>> Current revision seems to be 246... so that's pretty recent, right?
>> Is there a reason you need to use compiler-rt?
>> The errors we're getting are non-deterministic, which is what is making
>>> it so hard to figure out.
>> As in, crashes due to stray pointers?
>> Are you building the release from source, and if so, what cmake flags are
>>> you using?
>> Yes. https://github.com/russellw/ayane/blob/master/build-clang.bat
>>> Any other things I should know about that you use to build your project?
>> Current project build procedure:
>> if "%VCINSTALLDIR%"=="" call "C:\Program Files (x86)\Microsoft Visual
>> Studio 14.0\VC\vcvarsall" x64
>> cl /Fea /I\llvm\build\include /I\llvm\include /I\mpir /MP /MTd *.cpp
>> \llvm\build\Debug\lib\*.lib
>> \mpir\build.vc14\lib_mpir_core2\x64\Debug\mpir.lib setargv.obj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150903/9019367c/attachment.html>

More information about the cfe-dev mailing list