<div dir="ltr"><div>Looking at the test-suite results I would say we have trouble supporting pre-4.9. But GCC 4.7 and 4.8 are bad implementations of C++11.</div><div>GCC 4.9 just works.</div><div><br></div><div>Libc++ 3.8 should require GCC 4.9 or newer because that's what it actually needs. A C++11 feature complete compiler.</div><div><br></div><div>Below is a summary of how each GCC version does against the test-suite:</div><div><br></div><div>C++11 Test Suite Results</div><div>----------------------------------------</div><div>GCC        | Passes   | Failures</div><div>----------------------------------------</div><div>4.6          | 719           | 4212</div><div>4.7          | 4661         | 126</div><div>4.8          | 4015         | 772</div><div>4.9          | 4775         | 12  * 10 are missing "is_trivially_" type traits</div><div>5.3          | 4787         | 2 </div><div>6.0          | 4787         | 2</div><div>--------------------------------------</div><div>Clang 3.2 | 4786         | 3</div><div><br></div><div>I don't want to claim support for 4.7 or 4.8 unless It's tested regularly and the test-suite passes and that involves fixing hundreds of failures.</div><div>Some of the failures are due to mis-configuration. However a significant amount are caused compiler bugs.</div><div>"Fixing" these will involve taking good C++11 and replacing it with w/e the bad compiler accepts.</div><div>Unless people absolutely *need* this I would be hesitant to do it.</div><div><br></div><div>C++11 support is only half the story. Even with GCC 4.9 there are 600 failures in C++03 mode.</div><div>Libc++ depends on C++11 extensions in C++03 mode but GCC doesn't provide these.</div><div>Does libc++ need to support GCC in C++03 mode?</div><div><br></div><div>C++03 | Passes     | Failures</div><div>-------------------------------------------</div><div>4.6      | 4007         | 648</div><div>6.0      | 4029         | 628</div><div><br></div><div>I'm not trying to artificially limit support but I am trying to keep it moving forward. With limited resources</div><div>I want to focus on support for C++1z and new libraries like filesystem. Most libc++ users use clang,</div><div>and clang gave us full C++11 support in <a href="http://3.0.It">3.0.It</a>'s time we demand it from other compilers.</div><div><br></div><div>The full results of the runs can be found here:</div><div><a href="http://efcs.ca/libcxx/gcc-46-cxx03.txt">http://efcs.ca/libcxx/gcc-46-cxx03.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-46-cxx0x.txt">http://efcs.ca/libcxx/gcc-46-cxx0x.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-47-cxx11.txt">http://efcs.ca/libcxx/gcc-47-cxx11.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-48-cxx11.txt">http://efcs.ca/libcxx/gcc-48-cxx11.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-49-cxx11.txt">http://efcs.ca/libcxx/gcc-49-cxx11.txt</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 18, 2015 at 9:06 AM, Craig, Ben via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Is there one specific feature though?  Here's the list of features and releases: <a href="https://gcc.gnu.org/projects/cxx0x.html" rel="noreferrer" target="_blank">https://gcc.gnu.org/projects/cxx0x.html</a><br>
The thing that looks the most inconvenient to work around in 4.6 vs. 4.7 would probably be template aliases, and even that doesn't seem too horrible for c++03.<br>
Going from 4.6 to 4.5 would result in the loss of nullptr and constexpr, and I can see those causing a heavy burden.<br>
If you go the other direction though, you could argue that 4.8 would be beneficial, as then you get access to TLS.<div class="HOEnZb"><div class="h5"><br>
<br>
On 12/18/2015 9:56 AM, Joerg Sonnenberger via cfe-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Fri, Dec 18, 2015 at 08:30:26AM -0600, Craig, Ben via cfe-dev wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This isn't exactly the question that is being asked, but why GCC 4.7?<br>
</blockquote>
Lack of many C++ language features before GCC 4.7 is quite neutering.<br>
<br>
Joerg<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote>
<br></div></div><span class="im HOEnZb">
-- <br>
Employee of Qualcomm Innovation Center, Inc.<br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<br>
<br></span><div class="HOEnZb"><div class="h5">
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div><br></div>