diff options
-rw-r--r-- | lib/Support/APFloat.cpp | 4 | ||||
-rw-r--r-- | unittests/ADT/APFloatTest.cpp | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/Support/APFloat.cpp b/lib/Support/APFloat.cpp index d15a21b4ff..c13231d3fe 100644 --- a/lib/Support/APFloat.cpp +++ b/lib/Support/APFloat.cpp @@ -2153,7 +2153,7 @@ APFloat::convertFromHexadecimalString(const StringRef &s, integerPart hex_value; if(*p == '.') { - assert(dot == 0); + assert(dot == s.end()); dot = p++; } @@ -2190,7 +2190,7 @@ APFloat::convertFromHexadecimalString(const StringRef &s, int expAdjustment; /* Implicit hexadecimal point? */ - if(!dot) + if (dot == s.end()) dot = p; /* Calculate the exponent adjustment implicit in the number of diff --git a/unittests/ADT/APFloatTest.cpp b/unittests/ADT/APFloatTest.cpp index b97810bec4..7b947c5813 100644 --- a/unittests/ADT/APFloatTest.cpp +++ b/unittests/ADT/APFloatTest.cpp @@ -60,6 +60,8 @@ TEST(APFloatTest, fromString) { EXPECT_EQ(0.0, APFloat(APFloat::IEEEdouble, "0x0000.00000p1234").convertToDouble()); EXPECT_EQ(0.0, APFloat(APFloat::IEEEdouble, "0x.00000p1234").convertToDouble()); EXPECT_EQ(0.0, APFloat(APFloat::IEEEdouble, "0x0.p1234").convertToDouble()); + EXPECT_EQ(1.0625, APFloat(APFloat::IEEEdouble, "0x1.1p0").convertToDouble()); + EXPECT_EQ(1.0, APFloat(APFloat::IEEEdouble, "0x1p0").convertToDouble()); EXPECT_EQ(0.0, APFloat(APFloat::IEEEdouble, StringRef("0e1\02", 3)).convertToDouble()); } |