diff options
author | Chris Lattner <sabre@nondot.org> | 2004-05-06 16:25:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-05-06 16:25:59 +0000 |
commit | 991425ae70885d508546788fc82d50c9a9f5e2b0 (patch) | |
tree | 23305845bd5d19bbed3aff0fc473924ce30f0468 /llvm/lib | |
parent | 4c4497e834407b798544f91c7649f611f81e9c61 (diff) | |
download | bcm5719-llvm-991425ae70885d508546788fc82d50c9a9f5e2b0.tar.gz bcm5719-llvm-991425ae70885d508546788fc82d50c9a9f5e2b0.zip |
numeric_limits::infinity() apparently does not work on all systems. As a
workaround, use the C HUGE_VAL macro instead.
llvm-svn: 13377
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/LiveIntervals.cpp | 10 | ||||
-rw-r--r-- | llvm/lib/CodeGen/RegAllocLinearScan.cpp | 2 |
2 files changed, 5 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/LiveIntervals.cpp b/llvm/lib/CodeGen/LiveIntervals.cpp index 3adad780603..039982a5dd6 100644 --- a/llvm/lib/CodeGen/LiveIntervals.cpp +++ b/llvm/lib/CodeGen/LiveIntervals.cpp @@ -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)); } diff --git a/llvm/lib/CodeGen/RegAllocLinearScan.cpp b/llvm/lib/CodeGen/RegAllocLinearScan.cpp index 7759eec6386..dcfb597f954 100644 --- a/llvm/lib/CodeGen/RegAllocLinearScan.cpp +++ b/llvm/lib/CodeGen/RegAllocLinearScan.cpp @@ -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_); |