<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, Oct 31, 2017 at 2:45 PM Justin Bogner <<a href="mailto:mail@justinbogner.com">mail@justinbogner.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Zachary Turner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> writes:<br>><br>
> Issue: If we're going to make people bootstrap a compiler, we might as well<br>
> go all the way to C++17.<br>
> Comment: I'm not opposed.<br>
<br>
We shouldn't make people bootstrap the compiler without a very good<br>
reason. I really don't want to be in the situation where you have to get<br>
clang 3.7 to bootstrap 5.0 to bootstrap 7.0 to bootstrap 9.0 in 2019.<br></blockquote><div><br></div><div>Why would this many hops ever be necessary?  System Compiler -> {Clang 5 or GCC 7} -> Clang ToT should be sufficient to last until C++23, which we probably wouldn't adopt until 2025-2030 anyway</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> * Clang 6 supports all of C++20, and it builds with only C++11, so we<br>
> shouldn't have to worry too much about the problem of needing to "daisy<br>
> chain" compilers to finally get the latest version of LLVM building.  "GCC<br>
> 4.8 -> Clang 6 - > Clang ToT" should hold up through C++1z.<br>
<br>
I don't understand how this argument holds. If we change the minimum c++<br>
standard we build with every time one comes out, we'll definitely have a<br>
long daisy chain of compilers that need to be built to start working on<br>
LLVM at all.<br></blockquote><div>Clang 6 supports all of C++20.  If we started requiring C++14 today, someone can build Clang 6 with the system compiler and then build Clang ToT.</div><div><br></div><div>If 3 months later we started requiring C++17, someone could build clang 6 with the system compiler and then build Clang ToT.</div><div><br></div><div>If 3 months later we started requiring C++20, someone could still build clang 6 with the system compiler and then build Clang ToT.</div><div><br></div><div>Every relaxation of the kind of code we can use in LLVM does not necessitate an extra hop in the bootstrapping process, because existing versions of clang can already compile through C++20.</div></div></div>