mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-24 20:29:39 +08:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@325760 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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
|
#ifndef _LIBCPP_MATH_H
|
||||||
#define _LIBCPP_MATH_H
|
#define _LIBCPP_MATH_H
|
||||||
|
|
||||||
@@ -308,6 +298,8 @@ long double truncl(long double x);
|
|||||||
#pragma GCC system_header
|
#pragma GCC system_header
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include_next <math.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
||||||
// We support including .h headers inside 'extern "C"' contexts, so switch
|
// We support including .h headers inside 'extern "C"' contexts, so switch
|
||||||
@@ -1494,4 +1486,18 @@ trunc(_A1 __lcpp_x) _NOEXCEPT {return ::trunc((double)__lcpp_x);}
|
|||||||
|
|
||||||
#endif // __cplusplus
|
#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
|
#endif // _LIBCPP_MATH_H
|
||||||
|
|||||||
Reference in New Issue
Block a user