[llvm-dev] Using C++14 code in LLVM

Dimitry Andric via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 1 00:47:50 PDT 2017

FWIW, on FreeBSD, the compiler bootstrap path has mostly been to use "ancient" compilers (e.g. gcc 4.2 from before the switch to GPLv3) to build clang and libc++ 3.4.1, the last version that can be built with a pre-C++11 stack.  (This version is available from FreeBSD 9 onwards.)

Then, clang/libc++ 3.4.1 can be used to build later versions, such as 5.0.0.  I'm not sure that 3.4.1 already supports C++14, but it will probably do so partially.

If the requirements are raised to C++17, the bootstrap path will indeed become: ancient compiler -> clang/libc++ 3.4.1 -> clang/libc++ 5.0.0 (or whichever version supports enough of C++17) -> clang/libc++ ToT.


> On 1 Nov 2017, at 07:23, Zachary Turner via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> I’m ok with that, but the reason I’m pushing is because there is no clear plan of action. Even if the plan of action is “When X happens, we can enable C++14”, that’s fine too. I just want to know, concretely, what is X.
> We should either be able to say never or give a reasonable set of conditions that would enable a switch. All I’ve seen though is “it’s hard” which just means I’m going to ask again next year, and the year after, etc due to lack of clear guidance.
> To address your point though , this isn’t really about building everything with clang. You don’t need to bootstrap Clang to build a hypothetical C++17 enabled LLVM, you could also bootstrap a more modern version of GCC.
> This is really more fundamentally about “Can we have a clearly defined policy about how often we can bump the minimum compiler version, like we have for MSVC?”
> On Tue, Oct 31, 2017 at 10:30 PM Chris Lattner <clattner at nondot.org <mailto:clattner at nondot.org>> wrote:
> > On Oct 31, 2017, at 2:11 PM, Zachary Turner via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> >
> > Note that we could, in theory, provide a python script or something called `bootstrap.py` which
> >
> > a) downloads a source tarball, or specific git revision for a particular clang release
> > b) compiles it using system compiler
> > c) installs it
> > d) cleans up
> >
> > so that you wouldn't have to do anything manually.
> I love that you’re pushing hard on this, but I don’t think that this approach is practical.  While I love the future where everything is built with ToT clang, there are lots of reason why people either don’t want to do that (e.g. for “subjectively" bad reasons) or where they really can’t (e.g. clang doesn’t support their weird target).
> -Chris
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171101/9133d14f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171101/9133d14f/attachment.sig>

More information about the llvm-dev mailing list