[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 GitOrigin-RevId: 417ea79e792a87d53f5ac4f5388af4b25aa04d7d
diff --git a/test/UnitTest/RoundingModeUtils.cpp b/test/UnitTest/RoundingModeUtils.cpp index 8cc6834..c55e0d7 100644 --- a/test/UnitTest/RoundingModeUtils.cpp +++ b/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 @@ } 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/test/src/CMakeLists.txt b/test/src/CMakeLists.txt index 9e6c02c..52452cd 100644 --- a/test/src/CMakeLists.txt +++ b/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 @@ 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 @@ 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/test/src/fenv/CMakeLists.txt b/test/src/fenv/CMakeLists.txt index 11179cc..6334d36 100644 --- a/test/src/fenv/CMakeLists.txt +++ b/test/src/fenv/CMakeLists.txt
@@ -106,6 +106,7 @@ libc.src.__support.FPUtil.fenv_impl LINK_LIBRARIES LibcFPExceptionHelpers + UNIT_TEST_ONLY ) add_fp_unittest( @@ -120,5 +121,6 @@ libc.src.__support.FPUtil.fenv_impl LINK_LIBRARIES LibcFPExceptionHelpers + UNIT_TEST_ONLY ) endif()