diff options
author | Rainer Orth <ro@gcc.gnu.org> | 2019-08-05 14:06:16 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2019-08-05 14:06:16 +0000 |
commit | 91a658b094526c2e1c2af6cf56d46c3052992756 (patch) | |
tree | d8810e00fb83faebba2148c72710eac734e328fd /llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp | |
parent | 6ca1707b2372db13f5d6ca58b237d7f551275d2a (diff) | |
download | llvm-91a658b094526c2e1c2af6cf56d46c3052992756.zip llvm-91a658b094526c2e1c2af6cf56d46c3052992756.tar.gz llvm-91a658b094526c2e1c2af6cf56d46c3052992756.tar.bz2 |
[Driver] Properly use values-X[ca].o, values-xpg[46].o on Solaris
Builtins-*-sunos :: compiler_rt_logbf_test.c currently FAILs on Solaris, both SPARC and
x86, 32 and 64-bit.
It turned out that this is due to different behaviour of logb depending on the C
standard compiled for, as documented on logb(3M):
RETURN VALUES
Upon successful completion, these functions return the exponent of x.
If x is subnormal:
o For SUSv3-conforming applications compiled with the c99 com-
piler driver (see standards(7)), the exponent of x as if x
were normalized is returned.
o Otherwise, if compiled with the cc compiler driver, -1022,
-126, and -16382 are returned for logb(), logbf(), and
logbl(), respectively.
Studio c99 and gcc control this by linking with the appropriate version of values-xpg[46].o, but clang uses neither of those.
The following patch fixes this by following what gcc does, as corrected some time ago in
Fix use of Solaris values-Xc.o (PR target/40411)
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg02350.html and
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg02384.html.
Tested on x86_64-pc-solaris2.11, sparcv9-sun-solaris2.11, and x86_64-pc-linux-gnu.
Differential Revision: https://reviews.llvm.org/D64793
llvm-svn: 367866
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp')
0 files changed, 0 insertions, 0 deletions