[libc-commits] [libc] 417ea79 - [libc] Enable hermetic floating point tests
Joseph Huber via libc-commits
libc-commits at lists.llvm.org
Thu May 25 17:08:51 PDT 2023
Author: Joseph Huber
Date: 2023-05-25T19:08:44-05:00
New Revision: 417ea79e792a87d53f5ac4f5388af4b25aa04d7d
URL: https://github.com/llvm/llvm-project/commit/417ea79e792a87d53f5ac4f5388af4b25aa04d7d
DIFF: https://github.com/llvm/llvm-project/commit/417ea79e792a87d53f5ac4f5388af4b25aa04d7d.diff
LOG: [libc] Enable hermetic floating point tests
This patch enables us to run the floating point tests as hermetic.
Importantly we now use the internal versions of the `fesetround` and
`fegetround` functions.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D151123
Added:
Modified:
libc/test/UnitTest/RoundingModeUtils.cpp
libc/test/src/CMakeLists.txt
libc/test/src/fenv/CMakeLists.txt
Removed:
################################################################################
diff --git a/libc/test/UnitTest/RoundingModeUtils.cpp b/libc/test/UnitTest/RoundingModeUtils.cpp
index 8cc6834d89edb..c55e0d7818291 100644
--- a/libc/test/UnitTest/RoundingModeUtils.cpp
+++ b/libc/test/UnitTest/RoundingModeUtils.cpp
@@ -8,7 +8,7 @@
#include "RoundingModeUtils.h"
-#include <fenv.h>
+#include "src/__support/FPUtil/FEnvImpl.h"
namespace __llvm_libc {
namespace fputil {
@@ -34,15 +34,15 @@ int get_fe_rounding(RoundingMode mode) {
}
ForceRoundingMode::ForceRoundingMode(RoundingMode mode) {
- old_rounding_mode = fegetround();
+ old_rounding_mode = get_round();
rounding_mode = get_fe_rounding(mode);
if (old_rounding_mode != rounding_mode)
- fesetround(rounding_mode);
+ set_round(rounding_mode);
}
ForceRoundingMode::~ForceRoundingMode() {
if (old_rounding_mode != rounding_mode)
- fesetround(old_rounding_mode);
+ set_round(old_rounding_mode);
}
} // namespace testing
diff --git a/libc/test/src/CMakeLists.txt b/libc/test/src/CMakeLists.txt
index 9e6c02c1f9f4b..52452cd1037db 100644
--- a/libc/test/src/CMakeLists.txt
+++ b/libc/test/src/CMakeLists.txt
@@ -1,7 +1,7 @@
function(add_fp_unittest name)
cmake_parse_arguments(
"MATH_UNITTEST"
- "NEED_MPFR;HERMETIC_TEST_ONLY" # Optional arguments
+ "NEED_MPFR;UNIT_TEST_ONLY;HERMETIC_TEST_ONLY" # Optional arguments
"" # Single value arguments
"LINK_LIBRARIES" # Multi-value arguments
${ARGN}
@@ -16,6 +16,8 @@ function(add_fp_unittest name)
if(MATH_UNITTEST_HERMETIC_TEST_ONLY)
set(test_type HERMETIC_TEST_ONLY)
+ elseif(MATH_UNITTEST_UNIT_TEST_ONLY)
+ set(test_type UNIT_TEST_ONLY)
endif()
if(MATH_UNITTEST_NEED_MPFR)
if(MATH_UNITTEST_HERMETIC_TEST_ONLY)
@@ -26,7 +28,7 @@ function(add_fp_unittest name)
endif()
list(APPEND MATH_UNITTEST_LINK_LIBRARIES LibcFPTestHelpers)
- add_libc_unittest(
+ add_libc_test(
${name}
${test_type}
LINK_LIBRARIES "${MATH_UNITTEST_LINK_LIBRARIES}"
diff --git a/libc/test/src/fenv/CMakeLists.txt b/libc/test/src/fenv/CMakeLists.txt
index 11179cc88c380..6334d3635f8e9 100644
--- a/libc/test/src/fenv/CMakeLists.txt
+++ b/libc/test/src/fenv/CMakeLists.txt
@@ -106,6 +106,7 @@ if (NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPExceptionHelpers
+ UNIT_TEST_ONLY
)
add_fp_unittest(
@@ -120,5 +121,6 @@ if (NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
libc.src.__support.FPUtil.fenv_impl
LINK_LIBRARIES
LibcFPExceptionHelpers
+ UNIT_TEST_ONLY
)
endif()
More information about the libc-commits
mailing list