Skip to content

Commit eb56bc2

Browse files
authored
[libc] Remove specific nan payload in math functions (#79165)
1 parent 06f5b95 commit eb56bc2

File tree

6 files changed

+26
-41
lines changed

6 files changed

+26
-41
lines changed

libc/src/math/generic/asinf.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ LLVM_LIBC_FUNCTION(float, asinf, (float x)) {
109109
fputil::set_errno_if_required(EDOM);
110110
fputil::raise_except_if_required(FE_INVALID);
111111
}
112-
return x + FPBits::build_nan(Sign::POS, FPBits::FRACTION_MASK).get_val();
112+
return FPBits::build_quiet_nan().get_val();
113113
}
114114

115115
// Check for exceptional values

libc/src/math/generic/sincosf.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,7 @@ LLVM_LIBC_FUNCTION(void, sincosf, (float x, float *sinp, float *cosp)) {
148148
fputil::set_errno_if_required(EDOM);
149149
fputil::raise_except_if_required(FE_INVALID);
150150
}
151-
*sinp =
152-
x +
153-
FPBits::build_nan(fputil::Sign::POS, FPBits::FRACTION_MASK).get_val();
151+
*sinp = FPBits::build_quiet_nan().get_val();
154152
*cosp = *sinp;
155153
return;
156154
}

libc/test/UnitTest/FPMatcher.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ template <typename T> struct FPTest : public Test {
6969
static constexpr T zero = FPBits::zero(Sign::POS).get_val();
7070
static constexpr T neg_zero = FPBits::zero(Sign::NEG).get_val();
7171
static constexpr T aNaN = FPBits::build_quiet_nan().get_val();
72-
static constexpr T sNaN = FPBits::build_nan(Sign::POS, 1).get_val();
72+
static constexpr T sNaN = FPBits::build_nan().get_val();
7373
static constexpr T inf = FPBits::inf(Sign::POS).get_val();
7474
static constexpr T neg_inf = FPBits::inf(Sign::NEG).get_val();
7575
static constexpr T min_normal = FPBits::min_normal().get_val();
@@ -98,7 +98,7 @@ template <typename T> struct FPTest : public Test {
9898
const T zero = FPBits::zero(Sign::POS).get_val(); \
9999
const T neg_zero = FPBits::zero(Sign::NEG).get_val(); \
100100
const T aNaN = FPBits::build_quiet_nan().get_val(); \
101-
const T sNaN = FPBits::build_nan(Sign::POS, 1).get_val(); \
101+
const T sNaN = FPBits::build_nan().get_val(); \
102102
const T inf = FPBits::inf(Sign::POS).get_val(); \
103103
const T neg_inf = FPBits::inf(Sign::NEG).get_val(); \
104104
const T min_normal = FPBits::min_normal().get_val(); \

libc/test/src/__support/FPUtil/fpbits_test.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,7 @@ TEST(LlvmLibcFPBitsTest, FloatType) {
236236
"(+Infinity)");
237237
EXPECT_STREQ(LIBC_NAMESPACE::str(FloatBits::inf(Sign::NEG)).c_str(),
238238
"(-Infinity)");
239-
EXPECT_STREQ(LIBC_NAMESPACE::str(FloatBits::build_nan(Sign::POS, 1)).c_str(),
240-
"(NaN)");
239+
EXPECT_STREQ(LIBC_NAMESPACE::str(FloatBits::build_nan()).c_str(), "(NaN)");
241240

242241
FloatBits zero(0.0f);
243242
EXPECT_TRUE(zero.is_pos());
@@ -363,9 +362,8 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
363362
"(+Infinity)");
364363
EXPECT_STREQ(LIBC_NAMESPACE::str(LongDoubleBits::inf(Sign::NEG)).c_str(),
365364
"(-Infinity)");
366-
EXPECT_STREQ(
367-
LIBC_NAMESPACE::str(LongDoubleBits::build_nan(Sign::POS, 1)).c_str(),
368-
"(NaN)");
365+
EXPECT_STREQ(LIBC_NAMESPACE::str(LongDoubleBits::build_nan()).c_str(),
366+
"(NaN)");
369367

370368
LongDoubleBits zero(0.0l);
371369
EXPECT_TRUE(zero.is_pos());
@@ -444,9 +442,8 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
444442
"(+Infinity)");
445443
EXPECT_STREQ(LIBC_NAMESPACE::str(LongDoubleBits::inf(Sign::NEG)).c_str(),
446444
"(-Infinity)");
447-
EXPECT_STREQ(
448-
LIBC_NAMESPACE::str(LongDoubleBits::build_nan(Sign::POS, 1)).c_str(),
449-
"(NaN)");
445+
EXPECT_STREQ(LIBC_NAMESPACE::str(LongDoubleBits::build_nan()).c_str(),
446+
"(NaN)");
450447

451448
LongDoubleBits zero(0.0l);
452449
EXPECT_TRUE(zero.is_pos());
@@ -519,9 +516,7 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
519516
"(+Infinity)");
520517
EXPECT_STREQ(LIBC_NAMESPACE::str(Float128Bits::inf(Sign::NEG)).c_str(),
521518
"(-Infinity)");
522-
EXPECT_STREQ(
523-
LIBC_NAMESPACE::str(Float128Bits::build_nan(Sign::POS, 1)).c_str(),
524-
"(NaN)");
519+
EXPECT_STREQ(LIBC_NAMESPACE::str(Float128Bits::build_nan()).c_str(), "(NaN)");
525520

526521
Float128Bits zero = Float128Bits::zero(Sign::POS);
527522
EXPECT_TRUE(zero.is_pos());

libc/test/src/stdio/sprintf_test.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -586,9 +586,8 @@ TEST(LlvmLibcSPrintfTest, OctConv) {
586586
TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
587587
ForceRoundingMode r(RoundingMode::Nearest);
588588
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
589-
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::build_nan(
590-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
591-
.get_val();
589+
double nan =
590+
LIBC_NAMESPACE::fputil::FPBits<double>::build_quiet_nan().get_val();
592591
written = LIBC_NAMESPACE::sprintf(buff, "%a", 1.0);
593592
ASSERT_STREQ_LEN(written, buff, "0x1p+0");
594593

@@ -952,14 +951,12 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
952951
TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
953952
ForceRoundingMode r(RoundingMode::Nearest);
954953
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
955-
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::build_nan(
956-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
957-
.get_val();
954+
double nan =
955+
LIBC_NAMESPACE::fputil::FPBits<double>::build_quiet_nan().get_val();
958956
long double ld_inf =
959957
LIBC_NAMESPACE::fputil::FPBits<long double>::inf().get_val();
960-
long double ld_nan = LIBC_NAMESPACE::fputil::FPBits<long double>::build_nan(
961-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
962-
.get_val();
958+
long double ld_nan =
959+
LIBC_NAMESPACE::fputil::FPBits<long double>::build_quiet_nan().get_val();
963960

964961
char big_buff[10000]; // Used for long doubles and other extremely wide
965962
// numbers.
@@ -1808,9 +1805,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalLongDoubleConv) {
18081805
TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
18091806
ForceRoundingMode r(RoundingMode::Nearest);
18101807
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
1811-
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::build_nan(
1812-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
1813-
.get_val();
1808+
double nan =
1809+
LIBC_NAMESPACE::fputil::FPBits<double>::build_quiet_nan().get_val();
18141810

18151811
written = LIBC_NAMESPACE::sprintf(buff, "%e", 1.0);
18161812
ASSERT_STREQ_LEN(written, buff, "1.000000e+00");
@@ -2417,9 +2413,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentLongDoubleConv) {
24172413
TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
24182414
ForceRoundingMode r(RoundingMode::Nearest);
24192415
double inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
2420-
double nan = LIBC_NAMESPACE::fputil::FPBits<double>::build_nan(
2421-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
2422-
.get_val();
2416+
double nan =
2417+
LIBC_NAMESPACE::fputil::FPBits<double>::build_quiet_nan().get_val();
24232418

24242419
written = LIBC_NAMESPACE::sprintf(buff, "%g", 1.0);
24252420
ASSERT_STREQ_LEN(written, buff, "1");

libc/test/src/stdio/sscanf_test.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,8 @@ TEST(LlvmLibcSScanfTest, FloatConvSimple) {
231231
float result = 0;
232232

233233
float inf = LIBC_NAMESPACE::fputil::FPBits<float>::inf().get_val();
234-
float nan = LIBC_NAMESPACE::fputil::FPBits<float>::build_nan(
235-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
236-
.get_val();
234+
float nan =
235+
LIBC_NAMESPACE::fputil::FPBits<float>::build_quiet_nan().get_val();
237236

238237
ret_val = LIBC_NAMESPACE::sscanf("123", "%f", &result);
239238
EXPECT_EQ(ret_val, 1);
@@ -297,9 +296,8 @@ TEST(LlvmLibcSScanfTest, FloatConvLengthModifier) {
297296
long double ld_result = 0;
298297

299298
double d_inf = LIBC_NAMESPACE::fputil::FPBits<double>::inf().get_val();
300-
long double ld_nan = LIBC_NAMESPACE::fputil::FPBits<long double>::build_nan(
301-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
302-
.get_val();
299+
long double ld_nan =
300+
LIBC_NAMESPACE::fputil::FPBits<long double>::build_quiet_nan().get_val();
303301

304302
ret_val = LIBC_NAMESPACE::sscanf("123", "%lf", &d_result);
305303
EXPECT_EQ(ret_val, 1);
@@ -395,9 +393,8 @@ TEST(LlvmLibcSScanfTest, FloatConvComplexParsing) {
395393
float result = 0;
396394

397395
float inf = LIBC_NAMESPACE::fputil::FPBits<float>::inf().get_val();
398-
float nan = LIBC_NAMESPACE::fputil::FPBits<float>::build_nan(
399-
LIBC_NAMESPACE::fputil::Sign::POS, 1)
400-
.get_val();
396+
float nan =
397+
LIBC_NAMESPACE::fputil::FPBits<float>::build_quiet_nan().get_val();
401398

402399
ret_val = LIBC_NAMESPACE::sscanf("0x1.0e3", "%f", &result);
403400
EXPECT_EQ(ret_val, 1);

0 commit comments

Comments
 (0)