From f3f7dc3d2990151a78b246a7a1485d0c13a9fb36 Mon Sep 17 00:00:00 2001 From: Ehud Katz Date: Mon, 6 Jan 2020 10:51:55 +0200 Subject: [PATCH] [APFloat] Fix compilation warnings --- .../clang-tidy/readability/MagicNumbersCheck.cpp | 8 +++++-- clang/lib/Lex/LiteralSupport.cpp | 7 ++++-- llvm/lib/Support/APFloat.cpp | 4 +++- llvm/lib/Support/StringRef.cpp | 2 +- llvm/unittests/ADT/APFloatTest.cpp | 26 +++++----------------- 5 files changed, 21 insertions(+), 26 deletions(-) diff --git a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp index 64806ce..231e565 100644 --- a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp @@ -86,11 +86,15 @@ MagicNumbersCheck::MagicNumbersCheck(StringRef Name, ClangTidyContext *Context) IgnoredDoublePointValues.reserve(IgnoredFloatingPointValuesInput.size()); for (const auto &InputValue : IgnoredFloatingPointValuesInput) { llvm::APFloat FloatValue(llvm::APFloat::IEEEsingle()); - FloatValue.convertFromString(InputValue, DefaultRoundingMode); + if (!FloatValue.convertFromString(InputValue, DefaultRoundingMode)) { + assert(false && "Invalid floating point representation"); + } IgnoredFloatingPointValues.push_back(FloatValue.convertToFloat()); llvm::APFloat DoubleValue(llvm::APFloat::IEEEdouble()); - DoubleValue.convertFromString(InputValue, DefaultRoundingMode); + if (!DoubleValue.convertFromString(InputValue, DefaultRoundingMode)) { + assert(false && "Invalid floating point representation"); + } IgnoredDoublePointValues.push_back(DoubleValue.convertToDouble()); } llvm::sort(IgnoredFloatingPointValues.begin(), diff --git a/clang/lib/Lex/LiteralSupport.cpp b/clang/lib/Lex/LiteralSupport.cpp index 6630918..5881852 100644 --- a/clang/lib/Lex/LiteralSupport.cpp +++ b/clang/lib/Lex/LiteralSupport.cpp @@ -1053,8 +1053,11 @@ NumericLiteralParser::GetFloatValue(llvm::APFloat &Result) { auto StatusOrErr = Result.convertFromString(Str, APFloat::rmNearestTiesToEven); - assert(StatusOrErr && "Invalid floating point representation"); - return StatusOrErr ? *StatusOrErr : APFloat::opInvalidOp; + if (!StatusOrErr) { + assert(false && "Invalid floating point representation"); + return APFloat::opInvalidOp; + } + return *StatusOrErr; } static inline bool IsExponentPart(char c) { diff --git a/llvm/lib/Support/APFloat.cpp b/llvm/lib/Support/APFloat.cpp index f6999a6..d26c5e6 100644 --- a/llvm/lib/Support/APFloat.cpp +++ b/llvm/lib/Support/APFloat.cpp @@ -4511,7 +4511,9 @@ hash_code hash_value(const APFloat &Arg) { APFloat::APFloat(const fltSemantics &Semantics, StringRef S) : APFloat(Semantics) { auto StatusOrErr = convertFromString(S, rmNearestTiesToEven); - assert(StatusOrErr && "Invalid floating point representation"); + if (!StatusOrErr) { + assert(false && "Invalid floating point representation"); + } } APFloat::opStatus APFloat::convert(const fltSemantics &ToSemantics, diff --git a/llvm/lib/Support/StringRef.cpp b/llvm/lib/Support/StringRef.cpp index 4142d13..b5db172 100644 --- a/llvm/lib/Support/StringRef.cpp +++ b/llvm/lib/Support/StringRef.cpp @@ -590,7 +590,7 @@ bool StringRef::getAsDouble(double &Result, bool AllowInexact) const { APFloat F(0.0); auto ErrOrStatus = F.convertFromString(*this, APFloat::rmNearestTiesToEven); if (!ErrOrStatus) { - assert("Invalid floating point representation"); + assert(false && "Invalid floating point representation"); return true; } diff --git a/llvm/unittests/ADT/APFloatTest.cpp b/llvm/unittests/ADT/APFloatTest.cpp index 927e1fe..db529a0 100644 --- a/llvm/unittests/ADT/APFloatTest.cpp +++ b/llvm/unittests/ADT/APFloatTest.cpp @@ -666,26 +666,12 @@ TEST(APFloatTest, Zero) { TEST(APFloatTest, DecimalStringsWithoutNullTerminators) { // Make sure that we can parse strings without null terminators. // rdar://14323230. - APFloat Val(APFloat::IEEEdouble()); - Val.convertFromString(StringRef("0.00", 3), - llvm::APFloat::rmNearestTiesToEven); - EXPECT_EQ(Val.convertToDouble(), 0.0); - Val.convertFromString(StringRef("0.01", 3), - llvm::APFloat::rmNearestTiesToEven); - EXPECT_EQ(Val.convertToDouble(), 0.0); - Val.convertFromString(StringRef("0.09", 3), - llvm::APFloat::rmNearestTiesToEven); - EXPECT_EQ(Val.convertToDouble(), 0.0); - Val.convertFromString(StringRef("0.095", 4), - llvm::APFloat::rmNearestTiesToEven); - EXPECT_EQ(Val.convertToDouble(), 0.09); - Val.convertFromString(StringRef("0.00e+3", 7), - llvm::APFloat::rmNearestTiesToEven); - EXPECT_EQ(Val.convertToDouble(), 0.00); - Val.convertFromString(StringRef("0e+3", 4), - llvm::APFloat::rmNearestTiesToEven); - EXPECT_EQ(Val.convertToDouble(), 0.00); - + EXPECT_EQ(convertToDoubleFromString(StringRef("0.00", 3)), 0.0); + EXPECT_EQ(convertToDoubleFromString(StringRef("0.01", 3)), 0.0); + EXPECT_EQ(convertToDoubleFromString(StringRef("0.09", 3)), 0.0); + EXPECT_EQ(convertToDoubleFromString(StringRef("0.095", 4)), 0.09); + EXPECT_EQ(convertToDoubleFromString(StringRef("0.00e+3", 7)), 0.00); + EXPECT_EQ(convertToDoubleFromString(StringRef("0e+3", 4)), 0.00); } TEST(APFloatTest, fromZeroDecimalString) { -- 2.7.4