Changes in directory llvm/lib/CodeGen:
LiveIntervalAnalysis.cpp updated: 1.158 -> 1.159 --- Log message: Set weight of zero length intervals to infinite to prevent them from being spilled. --- Diffs of the changes: (+19 -0) LiveIntervalAnalysis.cpp | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+) Index: llvm/lib/CodeGen/LiveIntervalAnalysis.cpp diff -u llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.158 llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.159 --- llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.158 Tue May 9 01:37:47 2006 +++ llvm/lib/CodeGen/LiveIntervalAnalysis.cpp Thu May 11 02:29:24 2006 @@ -80,6 +80,15 @@ } +static bool isZeroLengthInterval(LiveInterval *li) { + for (LiveInterval::Ranges::const_iterator + i = li->ranges.begin(), e = li->ranges.end(); i != e; ++i) + if (i->end - i->start > LiveIntervals::InstrSlots::NUM) + return false; + return true; +} + + /// runOnMachineFunction - Register allocate the whole function /// bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) { @@ -199,6 +208,16 @@ } } + for (iterator I = begin(), E = end(); I != E; ++I) { + LiveInterval &li = I->second; + if (MRegisterInfo::isVirtualRegister(li.reg)) + // If the live interval legnth is essentially zero, i.e. in every live + // range the use follows def immediately, it doesn't make sense to spill + // it and hope it will be easier to allocate for this li. + if (isZeroLengthInterval(&li)) + li.weight = float(HUGE_VAL); + } + DEBUG(dump()); return true; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits