Skip to content

Commit 90b03e5

Browse files
author
git apple-llvm automerger
committed
Merge commit '0b72899f6db9' from llvm.org/main into next
2 parents 2c4d8d1 + 0b72899 commit 90b03e5

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

libc/include/llvm-libc-macros/math-macros.h

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,37 @@
4242
#define FP_LLOGBNAN LONG_MAX
4343
#endif
4444

45-
#if defined(__NVPTX__) || defined(__AMDGPU__) || defined(__FAST_MATH__)
46-
#define math_errhandling 0
47-
#elif defined(__NO_MATH_ERRNO__)
48-
#define math_errhandling (MATH_ERREXCEPT)
45+
// Math error handling. Target support is assumed to be existent unless
46+
// explicitly disabled.
47+
#if defined(__NVPTX__) || defined(__AMDGPU__) || defined(__FAST_MATH__) || \
48+
defined(__NO_MATH_ERRNO__)
49+
#define __LIBC_SUPPORTS_MATH_ERRNO 0
50+
#else
51+
#define __LIBC_SUPPORTS_MATH_ERRNO 1
52+
#endif
53+
54+
#if defined(__FAST_MATH__) || \
55+
((defined(__arm__) || defined(_M_ARM) || defined(__thumb__) || \
56+
defined(__aarch64__) || defined(_M_ARM64)) && \
57+
!defined(__ARM_FP))
58+
#define __LIBC_SUPPORTS_MATH_ERREXCEPT 0
4959
#else
60+
#define __LIBC_SUPPORTS_MATH_ERREXCEPT 1
61+
#endif
62+
63+
#if __LIBC_SUPPORTS_MATH_ERRNO && __LIBC_SUPPORTS_MATH_ERREXCEPT
5064
#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
65+
#elif __LIBC_SUPPORTS_MATH_ERRNO
66+
#define math_errhandling (MATH_ERRNO)
67+
#elif __LIBC_SUPPORTS_MATH_ERREXCEPT
68+
#define math_errhandling (MATH_ERREXCEPT)
69+
#else
70+
#define math_errhandling 0
5171
#endif
5272

73+
#undef __LIBC_SUPPORTS_MATH_ERRNO
74+
#undef __LIBC_SUPPORTS_MATH_ERREXCEPT
75+
5376
// POSIX math constants
5477
// https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/math.h.html
5578
#define M_E (__extension__ 0x1.5bf0a8b145769p1)

0 commit comments

Comments
 (0)