[libcxx-dev] Adding a _LIBCXX_HAS_NO_LONG_DOUBLE
Dionna Glaze via libcxx-dev
libcxx-dev at lists.llvm.org
Tue Jul 2 11:25:23 PDT 2019
Heya folks, new contributor here. I work at Google on the Asylo project for
enclave development. I'm in the process of switching our toolchain over to
clang from GCC, and I've found that I have some minor problems doing so
with newlib as our libc implementation.
Mainly, long double math operations are not supported by newlib. In
libstdc++, if long double functions weren't defined in libc (#ifndef
HAVE_HYPOTL, etc, ...), it'd define them itself. That's not the case in
libc++, so I was wondering what y'all thought would be the best course of
action.
Mainly, should libc++ act like libstdc++ and define its own long double
implementations of math operations, or should it not add the functions to
the std:: namespace if they're not available?
If not adding them, then the following headers would guard given
declarations within _LIBCPP_HAS_NO_LONG_DOUBLE/#endif:
#include <cmath>:
using ::nexttoward;
using ::nexttowardf;
using ::acosl;
[...contiguously down to...]
using ::truncl;
inline _LIBCPP_INLINE_VISIBILITY long double hypot( long double x, long
double y, long double z ) { return sqrt(x*x + y*y + z*z); }
#include <cstdlib>:
using ::strtold;
#include <locale>:
[...] long double __do_strtod<long double> [...]
#include <math.h>:
[...everything that mentions long double in its prototype...]
I can produce a patch quickly if this is an acceptable change to folks.
Regards,
-Dionna Glaze, PhD (she/her)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-dev/attachments/20190702/e88eab0f/attachment.html>
More information about the libcxx-dev
mailing list