<div dir="ltr">Since Chandler and Eric are both pinging me: Android is using GCC 4.9 for all targets (and is very near not using GCC at all), and we're not usually far behind ToT clang. We also don't care about pre-C++11 support. The platform is C++14 and NDK users that want C++03 can use stlport.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 18, 2015 at 3:50 PM, Chandler Carruth 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"><div dir="ltr">FWIW, I'm not aware of any users here at Google who care about anything before GCC 4.9. But we very much would like to have libc++ continue to support GCC 4.9. =]<div><div class="h5"><div><br></div><div><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 18, 2015 at 3:22 PM Eric Fiselier via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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" target="_blank">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" target="_blank">http://efcs.ca/libcxx/gcc-46-cxx03.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-46-cxx0x.txt" target="_blank">http://efcs.ca/libcxx/gcc-46-cxx0x.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-47-cxx11.txt" target="_blank">http://efcs.ca/libcxx/gcc-47-cxx11.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-48-cxx11.txt" target="_blank">http://efcs.ca/libcxx/gcc-48-cxx11.txt</a></div><div><a href="http://efcs.ca/libcxx/gcc-49-cxx11.txt" target="_blank">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><div><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>
-- <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><div>
_______________________________________________<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>
_______________________________________________<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></div></div></div></div></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">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>
<br></blockquote></div><br></div>