<div dir="ltr"><br><div class="gmail_quote"><div dir="ltr">On Tue, Oct 31, 2017 at 3:19 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 <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> writes:<br><br>
> If 3 months later we started requiring C++17, someone could build clang 6<br>
> with the system compiler and then build Clang ToT.<br>
><br>
> If 3 months later we started requiring C++20, someone could still build<br>
> clang 6 with the system compiler and then build Clang ToT.<br>
><br>
> Every relaxation of the kind of code we can use in LLVM does not<br>
> necessitate an extra hop in the bootstrapping process, because existing<br>
> versions of clang can already compile through C++20.<br>
<br>
I hate to exaggerate, but this sounds almost like an argument for using<br>
new C++ features the day after we implement them. There obviously has to<br>
be some balance here.<br></blockquote><div><br></div>Someone could probably use that line of reasoning to argue for using new features immediately after implementing them, but that someone wouldn't be me :)<br><div><br></div><div>In any case, the point was simply to illustrate that, in general, you do not need to add a hop to the bootstrapping process every time you bump the language standard.  C++20 is 4-6 years out before we're even discussing it though, and any discussion we have about if, when, or how to move to it now will probably be irrelevant by that time.</div><div><br></div><div>For C++14 and C++17 though, I think the argument still holds.  System Compiler -> {GCC 7 or Clang 5-6} -> ToT</div><div><br></div><div>should require only 1 hop regardless of language standard, and that covers us for quite a while.</div></div></div>