<div dir="ltr"><div class="gmail_default" style>Greetings all! This is the result of a chat between Richard and myself just now.</div><div class="gmail_default" style><br></div><div class="gmail_default" style>These days Clang does a great job of detecting GCC and libstdc++ installations and using them... such a great job that Clang installed today will work with GCC 4.9 if such a thing existed and were installed.</div>
<div class="gmail_default" style><br></div><div class="gmail_default" style>As we've noticed recently, this can cause problems, and now that we have clang releases and GCC releases with decent compatibility out in the wild (3.2 and 4.{6,7} resp.), I think we should take a different approach:</div>
<div class="gmail_default" style><br></div><div class="gmail_default" style>1) Set a max GCC version we use, and on trunk have it be silly (v99.99.99).</div><div class="gmail_default" style>2) On the release branch, lower this to the highest GCC version we test that release against. This protects a released clang from using newer GCC libstdc++ which is both good and bad -- no improvements from updates, but no breakage from updates.</div>
<div class="gmail_default" style>3) Teach the driver about incompatible versions of GCC and libstdc++, and have it try to find a different version when available. (Mostly relevant to 4.4 and 4.5 and C++11 headers...)</div>
<div class="gmail_default" style>4) Teach Clang itself to warn on a libstdc++ version macro which is one of the versions that has incompatibilities so users understand what is happening.</div><div class="gmail_default" style>
<br></div><div class="gmail_default" style><br></div><div class="gmail_default" style>Thoughts?</div></div>