numeric_limits::infinity() apparently does not work on all systems. As a
authorChris Lattner <sabre@nondot.org>
Thu, 6 May 2004 16:25:59 +0000 (16:25 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 6 May 2004 16:25:59 +0000 (16:25 +0000)
workaround, use the C HUGE_VAL macro instead.

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

lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/RegAllocLinearScan.cpp

index 3adad78060356b93e85ac20598e79c302759bc61..039982a5dd674b51644ad1a329db8585b6ed77ef 100644 (file)
@@ -196,7 +196,7 @@ void LiveIntervals::updateSpilledInterval(Interval& li,
                                           VirtRegMap& vrm,
                                           int slot)
 {
-    assert(li.weight != std::numeric_limits<float>::infinity() &&
+    assert(li.weight != HUGE_VAL &&
            "attempt to spill already spilled interval!");
     Interval::Ranges oldRanges;
     swap(oldRanges, li.ranges);
@@ -253,7 +253,7 @@ void LiveIntervals::updateSpilledInterval(Interval& li,
         }
     }
     // the new spill weight is now infinity as it cannot be spilled again
-    li.weight = std::numeric_limits<float>::infinity();
+    li.weight = HUGE_VAL;
     DEBUG(std::cerr << '\n');
     DEBUG(std::cerr << "\t\t\t\tupdated interval: " << li << '\n');
 }
@@ -556,15 +556,13 @@ LiveIntervals::Interval& LiveIntervals::getOrCreateInterval(unsigned reg)
 
 LiveIntervals::Interval::Interval(unsigned r)
     : reg(r),
-      weight((MRegisterInfo::isPhysicalRegister(r) ?
-              std::numeric_limits<float>::infinity() : 0.0F))
+      weight((MRegisterInfo::isPhysicalRegister(r) ?  HUGE_VAL : 0.0F))
 {
-
 }
 
 bool LiveIntervals::Interval::spilled() const
 {
-    return (weight == std::numeric_limits<float>::infinity() &&
+    return (weight == HUGE_VAL &&
             MRegisterInfo::isVirtualRegister(reg));
 }
 
index 7759eec6386940f66c4d39c3f3760ce912df5c93..dcfb597f95475425b5bc67c280b38e3875ded2b5 100644 (file)
@@ -351,7 +351,7 @@ void RA::assignRegOrStackSlotAtInterval(IntervalPtrs::value_type cur)
 
     DEBUG(std::cerr << "\tassigning stack slot at interval "<< *cur << ":\n");
 
-    float minWeight = std::numeric_limits<float>::infinity();
+    float minWeight = HUGE_VAL;
     unsigned minReg = 0;
     const TargetRegisterClass* rc = mf_->getSSARegMap()->getRegClass(cur->reg);
     for (TargetRegisterClass::iterator i = rc->allocation_order_begin(*mf_);