Replacing HUGE_VALF with llvm::huge_valf in order to work around a warning triggered in MSVC 12.

Patch reviewed by Reid Kleckner and Jim Grosbach.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194533 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Aaron Ballman
2013-11-13 00:15:44 +00:00
parent 328066513d
commit eb36024720
5 changed files with 21 additions and 8 deletions

View File

@@ -541,12 +541,12 @@ namespace llvm {
/// isSpillable - Can this interval be spilled? /// isSpillable - Can this interval be spilled?
bool isSpillable() const { bool isSpillable() const {
return weight != HUGE_VALF; return weight != llvm::huge_valf;
} }
/// markNotSpillable - Mark interval as not spillable /// markNotSpillable - Mark interval as not spillable
void markNotSpillable() { void markNotSpillable() {
weight = HUGE_VALF; weight = llvm::huge_valf;
} }
bool operator<(const LiveInterval& other) const { bool operator<(const LiveInterval& other) const {

View File

@@ -21,7 +21,8 @@
#include <cstring> #include <cstring>
#ifdef _MSC_VER #ifdef _MSC_VER
# include <intrin.h> #include <intrin.h>
#include <limits>
#endif #endif
namespace llvm { namespace llvm {
@@ -603,6 +604,17 @@ inline int64_t SignExtend64(uint64_t X, unsigned B) {
return int64_t(X << (64 - B)) >> (64 - B); return int64_t(X << (64 - B)) >> (64 - B);
} }
#if defined(_MSC_VER)
// Visual Studio defines the HUGE_VAL class of macros using purposeful
// constant arithmetic overflow, which it then warns on when encountered.
const float huge_valf = std::numeric_limits<float>::infinity();
const double huge_vald = std::numeric_limits<double>::infinity();
const long double huge_vall = std::numeric_limits<long double>::infinity();
#else
const float huge_valf = HUGE_VALF;
const double huge_vald = HUGE_VALD;
const long double huge_vall = HUGE_VALL;
#endif
} // End llvm namespace } // End llvm namespace
#endif #endif

View File

@@ -170,7 +170,8 @@ void LiveIntervals::dumpInstrs() const {
#endif #endif
LiveInterval* LiveIntervals::createInterval(unsigned reg) { LiveInterval* LiveIntervals::createInterval(unsigned reg) {
float Weight = TargetRegisterInfo::isPhysicalRegister(reg) ? HUGE_VALF : 0.0F; float Weight = TargetRegisterInfo::isPhysicalRegister(reg) ?
llvm::huge_valf : 0.0F;
return new LiveInterval(reg, Weight); return new LiveInterval(reg, Weight);
} }

View File

@@ -1477,7 +1477,7 @@ void RAGreedy::calcGapWeights(unsigned PhysReg,
break; break;
for (; Gap != NumGaps; ++Gap) { for (; Gap != NumGaps; ++Gap) {
GapWeight[Gap] = HUGE_VALF; GapWeight[Gap] = llvm::huge_valf;
if (Uses[Gap+1].getBaseIndex() >= I->end) if (Uses[Gap+1].getBaseIndex() >= I->end)
break; break;
} }
@@ -1583,7 +1583,7 @@ unsigned RAGreedy::tryLocalSplit(LiveInterval &VirtReg, AllocationOrder &Order,
// Remove any gaps with regmask clobbers. // Remove any gaps with regmask clobbers.
if (Matrix->checkRegMaskInterference(VirtReg, PhysReg)) if (Matrix->checkRegMaskInterference(VirtReg, PhysReg))
for (unsigned i = 0, e = RegMaskGaps.size(); i != e; ++i) for (unsigned i = 0, e = RegMaskGaps.size(); i != e; ++i)
GapWeight[RegMaskGaps[i]] = HUGE_VALF; GapWeight[RegMaskGaps[i]] = llvm::huge_valf;
// Try to find the best sequence of gaps to close. // Try to find the best sequence of gaps to close.
// The new spill weight must be larger than any gap interference. // The new spill weight must be larger than any gap interference.
@@ -1618,7 +1618,7 @@ unsigned RAGreedy::tryLocalSplit(LiveInterval &VirtReg, AllocationOrder &Order,
// Legally, without causing looping? // Legally, without causing looping?
bool Legal = !ProgressRequired || NewGaps < NumGaps; bool Legal = !ProgressRequired || NewGaps < NumGaps;
if (Legal && MaxGap < HUGE_VALF) { if (Legal && MaxGap < llvm::huge_valf) {
// Estimate the new spill weight. Each instruction reads or writes the // Estimate the new spill weight. Each instruction reads or writes the
// register. Conservatively assume there are no read-modify-write // register. Conservatively assume there are no read-modify-write
// instructions. // instructions.

View File

@@ -77,7 +77,7 @@ protected:
DEBUG(dbgs() << "Spilling everywhere " << *li << "\n"); DEBUG(dbgs() << "Spilling everywhere " << *li << "\n");
assert(li->weight != HUGE_VALF && assert(li->weight != llvm::huge_valf &&
"Attempting to spill already spilled value."); "Attempting to spill already spilled value.");
assert(!TargetRegisterInfo::isStackSlot(li->reg) && assert(!TargetRegisterInfo::isStackSlot(li->reg) &&