<div dir="ltr">Hi,<div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Dec 28, 2013 at 4:40 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: chandlerc<br>
Date: Fri Dec 27 20:40:19 2013<br>
New Revision: 198093<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=198093&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=198093&view=rev</a><br>
Log:<br>
Disable transforms that introduce calls to exp10*() on Linux due to<br>
widespread glibc bugs.<br>
<br>
The glibc implementation of exp10 has a very serious precision bug in<br>
version 2.15 (and older versions). This is still very widely used (the<br>
current Ubuntu LTS for example uses it) and so it isn't reasonable to<br>
make transforms that produce these functions. This fixes many<br>
miscompiles introduced when we started transforming pow(10.0, ...) into<br>
exp10, and it may have fixed other latent miscompiles where exp10<br>
provided sufficient precision but exp10f did not.<br>
<br>
This is all really horrible. The primary bug has been fixed for over<br>
a year and glibc 2.18 works correctly for the test cases I have, but it<br>
will be 2017 before the LTS using 2.15 is no longer supported by Ubuntu<br>
(and thus reasonable for folks to be relying on). =[ We're either going<br>
to need to live without these optimizations, or find a way to switch<br>
behavior more dynamically than using simply the fact that the OS is<br>
"Linux".<br><br></blockquote><div><br></div><div>Since glibc 2.19 stable is now out now, do you think it makes sense to enable these for >= 2.19?</div><div><br></div><div>Thanks.</div><div> </div></div></div>

</div>