[libc][NFC] Make few maths functions buildable outside of LLVM libc build.

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.
This commit is contained in:
Siva Chandra Reddy 2021-02-15 22:58:21 -08:00
parent 1a323c8a96
commit dba14814a6
3 changed files with 4 additions and 7 deletions

View 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
}
}

View 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
)

View 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);