Go to file
Chandler Carruth f5689f8304 Disable transforms that introduce calls to exp10*() on Linux due to
widespread glibc bugs.

The glibc implementation of exp10 has a very serious precision bug in
version 2.15 (and older versions). This is still very widely used (the
current Ubuntu LTS for example uses it) and so it isn't reasonable to
make transforms that produce these functions. This fixes many
miscompiles introduced when we started transforming pow(10.0, ...) into
exp10, and it may have fixed other latent miscompiles where exp10
provided sufficient precision but exp10f did not.

This is all really horrible. The primary bug has been fixed for over
a year and glibc 2.18 works correctly for the test cases I have, but it
will be 2017 before the LTS using 2.15 is no longer supported by Ubuntu
(and thus reasonable for folks to be relying on). =[ We're either going
to need to live without these optimizations, or find a way to switch
behavior more dynamically than using simply the fact that the OS is
"Linux".

To make matters worse, there appears to be significant testing and
fixing of numerous other bugs in the exp10 family of functions right now
in glibc. While those haven't been causing problems I've seen in the
wild, it gives me concerns that we may need to wait until an even later
release of glibc before we can reliably transform code into exp10.

llvm-svn: 198093
2013-12-28 02:40:19 +00:00
clang Set NO_DEAD_STRIP for clang after llvm r198087. 2013-12-27 22:39:28 +00:00
clang-tools-extra Clang-tidy: added --disable-checks, --list-checks options. 2013-12-19 19:57:05 +00:00
compiler-rt [ASan] Delete asan_intercepted_functions.h, move the code into asan_interceptors.h 2013-12-26 15:34:31 +00:00
debuginfo-tests don't use CHECK-NEXT because it may be on the same line. 2013-09-18 23:01:54 +00:00
libclc Add floating-point macro definitions v2 2013-12-20 05:13:42 +00:00
libcxx Make cv_status a class enum. Fixes PR18314. Thanks to Andersca for the report and the patch. 2013-12-23 22:14:27 +00:00
libcxxabi Add a first cut at a Registers_arm class, to be used for 32bit arm EHABI unwinding. 2013-12-18 17:53:55 +00:00
lld Fix a gcc-4.8 warning, about extraneous semicolons. 2013-12-28 00:46:57 +00:00
lldb Fix sidebar links 2013-12-26 07:23:52 +00:00
llvm Disable transforms that introduce calls to exp10*() on Linux due to 2013-12-28 02:40:19 +00:00
openmp For your Christmas hacking pleasure. 2013-12-23 17:28:57 +00:00
polly www: Simplify css 2013-12-21 00:26:05 +00:00