[PATCH] D64793: [Driver] Properly use values-X[ca].o, values-xpg.o on Solaris
Rainer Orth via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 16 05:49:11 PDT 2019
ro created this revision.
ro added reviewers: fedor.sergeev, rsmith, mehdi_amini, rnk.
Herald added subscribers: kadircet, jrtc27, ilya-biryukov, mgorny, jyknight.
Herald added a project: clang.
`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)`:
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
Studio c99 and gcc control this by linking with the appropriate version of `values-xpg.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.
It makes use of `LangStandard::getLangStandardForName` to parse the `std=<std>`
values. However, I found that the function currently doesn't handle the alias forms
(like `c90` for `c89`). Given that it isn't currently used in the clang repo, I just added
As a consequence, `ClangDriverTests` now also needs to be linked with `libclangFrontend`.
Tested on `x86_64-pc-solaris2.11`, `sparcv9-sun-solaris2.11`, and `x86_64-pc-linux-gnu`.
Ok for trunk (and a backport to the llvm 9 branch)?
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 8490 bytes
Desc: not available
More information about the cfe-commits