Fix Bug: test/Regression/Other/2002-04-07-InfConstant.ll
authorChris Lattner <sabre@nondot.org>
Sun, 7 Apr 2002 08:42:53 +0000 (08:42 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 7 Apr 2002 08:42:53 +0000 (08:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2142 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Constants.cpp

index 410276683d15db17cf283ce2e7da5cfd90639045..acec62b4f1ab327fdaa3413e5e8260c517122a9d 100644 (file)
@@ -165,9 +165,18 @@ std::string ConstantUInt::getStrValue() const {
 //
 std::string ConstantFP::getStrValue() const {
   std::string StrVal = ftostr(Val);
-  double TestVal = atof(StrVal.c_str());  // Reparse stringized version!
-  if (TestVal == Val)
-    return StrVal;
+
+  // Check to make sure that the stringized number is not some string like "Inf"
+  // or NaN, that atof will accept, but the lexer will not.  Check that the
+  // string matches the "[-+]?[0-9]" regex.
+  //
+  if ((StrVal[0] >= '0' && StrVal[0] <= '9') ||
+      ((StrVal[0] == '-' || StrVal[0] == '+') &&
+       (StrVal[0] >= '0' && StrVal[0] <= '9'))) {
+    double TestVal = atof(StrVal.c_str());  // Reparse stringized version!
+    if (TestVal == Val)
+      return StrVal;
+  }
 
   // Otherwise we could not reparse it to exactly the same value, so we must
   // output the string in hexadecimal format!