EricWF added a comment.

In https://reviews.llvm.org/D23926#531226, @rmaprath wrote:

> Simplified the patch a little bit more.
>
> Now, library vendors should be able to define 
> `_LIBCPP_STRICT_C99_COMPATIBILITY` and `libc++` will not use/test C99 math 
> functions in `C++03/98` modes. Currently it's only the math functions, we can 
> extend this approach to other affected areas if the approach is OK. Not 100% 
> sure about the namings, can change them as needed.
>
> @EricWF: Gentle ping.


Currently we rely on C++11, C99, BSD, XOPEN, and GNU extensions in all dialects 
in the headers. We have to do so to safely and correctly implement locales and 
IO. In order to support this clang++ and g++ explicitly enable the C99 standard 
library by defining `-D_GNU_SOURCE` in the driver (Heres a 10yo libstdc++ bug 
about it <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11196>).

"strict C95 compatibly" is not a feature for our C++ users. If your C library 
support C99 you should enable it, not make libc++ conforming. If we have to 
disable a couple of `<math.h>` functions to make that work that's OK. However I 
view that as a defect not a feature.


================
Comment at: test/std/depr/depr.c.headers/math_h.pass.cpp:753
@@ -752,1 +752,3 @@
 
+#if _LIBCPP_USE_C99
+
----------------
Tests should be as portable as across standard libraries and not enabled by 
libc++ specific macros.
Disabling tests is OK though. ex `#ifndef _LIBCPP_HAS_NO_C99_MATH`.


https://reviews.llvm.org/D23926



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to