[libc][NFC] Make few maths functions buildable outside of LLVM libc build.
authorSiva Chandra Reddy <sivachandra@google.com>
Tue, 16 Feb 2021 06:58:21 +0000 (22:58 -0800)
committerSiva Chandra Reddy <sivachandra@google.com>
Tue, 16 Feb 2021 17:14:29 +0000 (09:14 -0800)
Few math functions manipulate errno. They assumed that LLVM libc's errno
is available. However, that might not be the case when these functions
are used in a libc which does not use LLVM libc's errno. This change
switches such uses of LLVM libc's errno to the normal public errno macro.
This does not affect LLVM libc's build because the include order ensures
we get LLVM libc's errno. Also, the header check rule ensures we are only
including LLVM libc's errno.h.

libc/test/src/math/RoundToIntegerTest.h
libc/utils/FPUtil/CMakeLists.txt
libc/utils/FPUtil/NearestIntegerOperations.h

index 4b28039..63b0484 100644 (file)
@@ -9,7 +9,6 @@
 #ifndef LLVM_LIBC_TEST_SRC_MATH_ROUNDTOINTEGERTEST_H
 #define LLVM_LIBC_TEST_SRC_MATH_ROUNDTOINTEGERTEST_H
 
-#include "src/errno/llvmlibc_errno.h"
 #include "utils/FPUtil/FPBits.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
 #include "utils/UnitTest/Test.h"
@@ -47,7 +46,7 @@ private:
   void testOneInput(RoundToIntegerFunc func, F input, I expected,
                     bool expectError) {
 #if math_errhandling & MATH_ERRNO
-    llvmlibc_errno = 0;
+    errno = 0;
 #endif
 #if math_errhandling & MATH_ERREXCEPT
     __llvm_libc::fputil::clearExcept(FE_ALL_EXCEPT);
@@ -60,14 +59,14 @@ private:
       ASSERT_EQ(__llvm_libc::fputil::testExcept(FE_ALL_EXCEPT), FE_INVALID);
 #endif
 #if math_errhandling & MATH_ERRNO
-      ASSERT_EQ(llvmlibc_errno, EDOM);
+      ASSERT_EQ(errno, EDOM);
 #endif
     } else {
 #if math_errhandling & MATH_ERREXCEPT
       ASSERT_EQ(__llvm_libc::fputil::testExcept(FE_ALL_EXCEPT), 0);
 #endif
 #if math_errhandling & MATH_ERRNO
-      ASSERT_EQ(llvmlibc_errno, 0);
+      ASSERT_EQ(errno, 0);
 #endif
     }
   }
index c54184e..2c1c166 100644 (file)
@@ -31,7 +31,6 @@ add_header_library(
     libc.include.math
     libc.include.errno
     libc.include.fenv
-    libc.src.errno.__errno_location
     libc.utils.CPP.standalone_cpp
 )
 
index 6af4c4c..004f269 100644 (file)
@@ -16,7 +16,6 @@
 
 #include <math.h>
 #if math_errhandling & MATH_ERRNO
-#include "src/errno/llvmlibc_errno.h"
 #include <errno.h>
 #endif
 
@@ -247,7 +246,7 @@ static inline I roundedFloatToSignedInteger(F x) {
   FPBits<F> bits(x);
   auto setDomainErrorAndRaiseInvalid = []() {
 #if math_errhandling & MATH_ERRNO
-    llvmlibc_errno = EDOM;
+    errno = EDOM; // NOLINT
 #endif
 #if math_errhandling & MATH_ERREXCEPT
     raiseExcept(FE_INVALID);