[libc-commits] [libc] [libc] Remove FE_ALL_EXCEPT check in hdr/fenv_macros.h. (PR #114446)
via libc-commits
libc-commits at lists.llvm.org
Thu Oct 31 11:25:50 PDT 2024
https://github.com/lntue created https://github.com/llvm/llvm-project/pull/114446
FE_ALL_EXCEPT macro might not be a valid preprocessor constant expression in some environment.
Moreover, FE_ALL_EXCEPT might not be defined as int.
>From 7cc384d1a8f8403bda656e4530097d247b871e88 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue.h at gmail.com>
Date: Thu, 31 Oct 2024 18:16:43 +0000
Subject: [PATCH] [libc] Remove FE_ALL_EXCEPT check in hdr/fenv_macros.h.
FE_ALL_EXCEPT macro might not be a valid preprocessor constant expression on some environment.
Moreover, FE_ALL_EXCEPT might not be defined as int.
---
libc/hdr/fenv_macros.h | 7 -------
libc/test/UnitTest/FPMatcher.h | 22 +++++++++++++---------
2 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/libc/hdr/fenv_macros.h b/libc/hdr/fenv_macros.h
index a2e4462ef02dca..3f0bd89a6ea354 100644
--- a/libc/hdr/fenv_macros.h
+++ b/libc/hdr/fenv_macros.h
@@ -19,7 +19,6 @@
// In some environment, FE_ALL_EXCEPT is set to 0 and the remaining exceptions
// FE_* are missing.
-#if (FE_ALL_EXCEPT == 0)
#ifndef FE_DIVBYZERO
#define FE_DIVBYZERO 0
#endif // FE_DIVBYZERO
@@ -39,12 +38,6 @@
#ifndef FE_UNDERFLOW
#define FE_UNDERFLOW 0
#endif // FE_UNDERFLOW
-#else
-// If this is not provided by the system, define it for use internally.
-#ifndef __FE_DENORM
-#define __FE_DENORM (1 << 6)
-#endif
-#endif
// Rounding mode macros might be missing.
#ifndef FE_DOWNWARD
diff --git a/libc/test/UnitTest/FPMatcher.h b/libc/test/UnitTest/FPMatcher.h
index 7fcc6a32025b5d..55fe73cd2f1ac9 100644
--- a/libc/test/UnitTest/FPMatcher.h
+++ b/libc/test/UnitTest/FPMatcher.h
@@ -297,31 +297,35 @@ struct ModifyMXCSR {
#define EXPECT_FP_EXCEPTION(expected) \
do { \
if (math_errhandling & MATH_ERREXCEPT) { \
- EXPECT_EQ(LIBC_NAMESPACE::fputil::test_except(FE_ALL_EXCEPT) & \
- ((expected) ? (expected) : FE_ALL_EXCEPT), \
- (expected)); \
+ EXPECT_EQ( \
+ LIBC_NAMESPACE::fputil::test_except( \
+ static_cast<int>(FE_ALL_EXCEPT)) & \
+ ((expected) ? (expected) : static_cast<int>(FE_ALL_EXCEPT)), \
+ (expected)); \
} \
} while (0)
#define ASSERT_FP_EXCEPTION(expected) \
do { \
if (math_errhandling & MATH_ERREXCEPT) { \
- ASSERT_EQ(LIBC_NAMESPACE::fputil::test_except(FE_ALL_EXCEPT) & \
- ((expected) ? (expected) : FE_ALL_EXCEPT), \
- (expected)); \
+ ASSERT_EQ( \
+ LIBC_NAMESPACE::fputil::test_except( \
+ static_cast<int>(FE_ALL_EXCEPT)) & \
+ ((expected) ? (expected) : static_cast<int>(FE_ALL_EXCEPT)), \
+ (expected)); \
} \
} while (0)
#define EXPECT_FP_EQ_WITH_EXCEPTION(expected_val, actual_val, expected_except) \
do { \
- LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
+ LIBC_NAMESPACE::fputil::clear_except(static_cast<int>(FE_ALL_EXCEPT)); \
EXPECT_FP_EQ(expected_val, actual_val); \
EXPECT_FP_EXCEPTION(expected_except); \
} while (0)
#define EXPECT_FP_IS_NAN_WITH_EXCEPTION(actual_val, expected_except) \
do { \
- LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
+ LIBC_NAMESPACE::fputil::clear_except(static_cast<int>(FE_ALL_EXCEPT)); \
EXPECT_FP_IS_NAN(actual_val); \
EXPECT_FP_EXCEPTION(expected_except); \
} while (0)
@@ -374,7 +378,7 @@ struct ModifyMXCSR {
using namespace LIBC_NAMESPACE::fputil::testing; \
ForceRoundingMode __r((rounding_mode)); \
if (__r.success) { \
- LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT); \
+ LIBC_NAMESPACE::fputil::clear_except(static_cast<int>(FE_ALL_EXCEPT)); \
EXPECT_FP_EQ((expected), (actual)); \
EXPECT_FP_EXCEPTION(expected_except); \
} \
More information about the libc-commits
mailing list