Author: miyuki Date: Thu Feb 22 01:34:08 2018 New Revision: 325760 URL: http://llvm.org/viewvc/llvm-project?rev=325760&view=rev Log: [libcxx] Do not include the C math.h header before __config
Summary: Certain C libraries require configuration macros defined in __config to provide the correct functionality for libc++. This patch ensures that the C header math.h is always included after the __config header. It also adds a Windows-specific #if guard for the case when the C math.h file is included the second time, as suggested by Marshall in https://reviews.llvm.org/rL323490. Fixes PR36382. Reviewers: mclow.lists, EricWF Reviewed By: mclow.lists Subscribers: cfe-commits, pcc, christof, rogfer01 Differential Revision: https://reviews.llvm.org/D43579 Modified: libcxx/trunk/include/math.h Modified: libcxx/trunk/include/math.h URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/math.h?rev=325760&r1=325759&r2=325760&view=diff ============================================================================== --- libcxx/trunk/include/math.h (original) +++ libcxx/trunk/include/math.h Thu Feb 22 01:34:08 2018 @@ -8,16 +8,6 @@ // //===----------------------------------------------------------------------===// -// This include lives outside the header guard in order to support an MSVC -// extension which allows users to do: -// -// #define _USE_MATH_DEFINES -// #include <math.h> -// -// and receive the definitions of mathematical constants, even if <math.h> -// has previously been included. -#include_next <math.h> - #ifndef _LIBCPP_MATH_H #define _LIBCPP_MATH_H @@ -308,6 +298,8 @@ long double truncl(long double x); #pragma GCC system_header #endif +#include_next <math.h> + #ifdef __cplusplus // We support including .h headers inside 'extern "C"' contexts, so switch @@ -1494,4 +1486,18 @@ trunc(_A1 __lcpp_x) _NOEXCEPT {return :: #endif // __cplusplus +#else // _LIBCPP_MATH_H + +// This include lives outside the header guard in order to support an MSVC +// extension which allows users to do: +// +// #define _USE_MATH_DEFINES +// #include <math.h> +// +// and receive the definitions of mathematical constants, even if <math.h> +// has previously been included. +#if defined(_LIBCPP_MSVCRT) && defined(_USE_MATH_DEFINES) +#include_next <math.h> +#endif + #endif // _LIBCPP_MATH_H _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits