forked from OSchip/llvm-project
Revert "Recommit [libc++] Move abs and div into stdlib.h to fix header cycle."
It seems that D74892 still hasn't fixed the issue on the bot. Currently investigating the bot breakage and meanwhile (again) reverting this...
This commit is contained in:
parent
ef3678cfee
commit
bd2965c9db
|
@ -297,6 +297,9 @@ long double truncl(long double x);
|
|||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#define _LIBCPP_STDLIB_INCLUDE_NEXT
|
||||
#include <stdlib.h>
|
||||
|
||||
#include_next <math.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -305,7 +308,6 @@ long double truncl(long double x);
|
|||
// back to C++ linkage before including these C++ headers.
|
||||
extern "C++" {
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <type_traits>
|
||||
#include <limits>
|
||||
|
||||
|
@ -758,12 +760,61 @@ isunordered(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
|
|||
#endif // isunordered
|
||||
|
||||
// abs
|
||||
//
|
||||
// handled in stdlib.h
|
||||
|
||||
#undef abs
|
||||
#undef labs
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
#undef llabs
|
||||
#endif
|
||||
|
||||
// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
|
||||
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
|
||||
inline _LIBCPP_INLINE_VISIBILITY long abs(long __x) _NOEXCEPT {
|
||||
return ::labs(__x);
|
||||
}
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {
|
||||
return ::llabs(__x);
|
||||
}
|
||||
#endif // _LIBCPP_HAS_NO_LONG_LONG
|
||||
#endif // !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
|
||||
|
||||
|
||||
#if !(defined(_AIX) || defined(__sun__))
|
||||
inline _LIBCPP_INLINE_VISIBILITY float abs(float __lcpp_x) _NOEXCEPT {
|
||||
return ::fabsf(__lcpp_x);
|
||||
}
|
||||
|
||||
inline _LIBCPP_INLINE_VISIBILITY double abs(double __lcpp_x) _NOEXCEPT {
|
||||
return ::fabs(__lcpp_x);
|
||||
}
|
||||
|
||||
inline _LIBCPP_INLINE_VISIBILITY long double
|
||||
abs(long double __lcpp_x) _NOEXCEPT {
|
||||
return ::fabsl(__lcpp_x);
|
||||
}
|
||||
#endif // !(defined(_AIX) || defined(__sun__))
|
||||
|
||||
// div
|
||||
//
|
||||
// handled in stdlib.h
|
||||
|
||||
#undef div
|
||||
#undef ldiv
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
#undef lldiv
|
||||
#endif
|
||||
|
||||
// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
|
||||
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
|
||||
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div(long __x, long __y) _NOEXCEPT {
|
||||
return ::ldiv(__x, __y);
|
||||
}
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
|
||||
long long __y) _NOEXCEPT {
|
||||
return ::lldiv(__x, __y);
|
||||
}
|
||||
#endif // _LIBCPP_HAS_NO_LONG_LONG
|
||||
#endif // _LIBCPP_MSVCRT / __sun__ / _AIX
|
||||
|
||||
// acos
|
||||
|
||||
|
|
|
@ -7,12 +7,16 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#if defined(__need_malloc_and_calloc)
|
||||
#if defined(__need_malloc_and_calloc) || defined(_LIBCPP_STDLIB_INCLUDE_NEXT)
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#if defined(_LIBCPP_STDLIB_INCLUDE_NEXT)
|
||||
#undef _LIBCPP_STDLIB_INCLUDE_NEXT
|
||||
#endif
|
||||
|
||||
#include_next <stdlib.h>
|
||||
|
||||
#elif !defined(_LIBCPP_STDLIB_H)
|
||||
|
@ -93,63 +97,7 @@ void *aligned_alloc(size_t alignment, size_t size); // C11
|
|||
#include_next <stdlib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C++" {
|
||||
// abs
|
||||
|
||||
#undef abs
|
||||
#undef labs
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
#undef llabs
|
||||
#endif
|
||||
|
||||
// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
|
||||
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
|
||||
inline _LIBCPP_INLINE_VISIBILITY long abs(long __x) _NOEXCEPT {
|
||||
return __builtin_labs(__x);
|
||||
}
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {
|
||||
return __builtin_llabs(__x);
|
||||
}
|
||||
#endif // _LIBCPP_HAS_NO_LONG_LONG
|
||||
#endif // !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
|
||||
|
||||
#if !(defined(_AIX) || defined(__sun__))
|
||||
inline _LIBCPP_INLINE_VISIBILITY float abs(float __lcpp_x) _NOEXCEPT {
|
||||
return __builtin_fabsf(__lcpp_x); // Use builtins to prevent needing math.h
|
||||
}
|
||||
|
||||
inline _LIBCPP_INLINE_VISIBILITY double abs(double __lcpp_x) _NOEXCEPT {
|
||||
return __builtin_fabs(__lcpp_x);
|
||||
}
|
||||
|
||||
inline _LIBCPP_INLINE_VISIBILITY long double
|
||||
abs(long double __lcpp_x) _NOEXCEPT {
|
||||
return __builtin_fabsl(__lcpp_x);
|
||||
}
|
||||
#endif // !(defined(_AIX) || defined(__sun__))
|
||||
|
||||
// div
|
||||
|
||||
#undef div
|
||||
#undef ldiv
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
#undef lldiv
|
||||
#endif
|
||||
|
||||
// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined
|
||||
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
|
||||
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div(long __x, long __y) _NOEXCEPT {
|
||||
return ::ldiv(__x, __y);
|
||||
}
|
||||
#ifndef _LIBCPP_HAS_NO_LONG_LONG
|
||||
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x,
|
||||
long long __y) _NOEXCEPT {
|
||||
return ::lldiv(__x, __y);
|
||||
}
|
||||
#endif // _LIBCPP_HAS_NO_LONG_LONG
|
||||
#endif // _LIBCPP_MSVCRT / __sun__ / _AIX
|
||||
} // extern "C++"
|
||||
#include <math.h>
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // _LIBCPP_STDLIB_H
|
||||
|
|
Loading…
Reference in New Issue