Fix check for valid floats. Also use and HUGE_VALF instead
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Tue, 7 Dec 2004 06:46:50 +0000 (06:46 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Tue, 7 Dec 2004 06:46:50 +0000 (06:46 +0000)
of std::numeric_limits, because they work in more platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18593 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Constants.cpp

index c97d9fc8d39b7a19a39728640b25b5757e10f27c..dc64161ce07ee882c164bb00b11f5ebca2543625 100644 (file)
@@ -21,7 +21,6 @@
 #include "llvm/ADT/StringExtras.h"
 #include <algorithm>
 #include <iostream>
-#include <limits>
 using namespace llvm;
 
 ConstantBool *ConstantBool::True  = new ConstantBool(true);
@@ -443,15 +442,7 @@ bool ConstantFP::isValueValidForType(const Type *Ty, double Val) {
 
     // TODO: Figure out how to test if a double can be cast to a float!
   case Type::FloatTyID:
-    return 
-      (std::numeric_limits<double>::has_infinity && 
-       std::numeric_limits<float>::has_infinity &&
-       Val == std::numeric_limits<double>::infinity()) ||
-      (std::numeric_limits<double>::has_quiet_NaN &&
-       std::numeric_limits<float>::has_quiet_NaN &&
-       Val == std::numeric_limits<double>::quiet_NaN()) ||
-      (Val >= -std::numeric_limits<float>::max() && 
-       Val <= std::numeric_limits<float>::max());
+    return isinf(Val) || isnan(Val) || (Val >= -HUGE_VALF && Val <= HUGE_VALF);
     
   case Type::DoubleTyID:
     return true;          // This is the largest type...