Author: evancheng Date: Thu Aug 16 02:24:22 2007 New Revision: 41118 URL: http://llvm.org/viewvc/llvm-project?rev=41118&view=rev Log: Fix some kill info update bugs; add hidden option -disable-rematerialization to turn off remat for debugging.
Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=41118&r1=41117&r2=41118&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp (original) +++ llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp Thu Aug 16 02:24:22 2007 @@ -36,6 +36,12 @@ #include <cmath> using namespace llvm; +namespace { + // Hidden options for help debugging. + cl::opt<bool> DisableReMat("disable-rematerialization", + cl::init(false), cl::Hidden); +} + STATISTIC(numIntervals, "Number of original intervals"); STATISTIC(numIntervalsAfter, "Number of intervals after coalescing"); STATISTIC(numFolded , "Number of loads/stores folded into instructions"); @@ -201,6 +207,9 @@ /// val# of the specified interval is re-materializable. bool LiveIntervals::isReMaterializable(const LiveInterval &li, unsigned ValNum, MachineInstr *MI) { + if (DisableReMat) + return false; + if (tii_->isTriviallyReMaterializable(MI)) return true; @@ -610,7 +619,7 @@ DOUT << " Removing [" << Start << "," << End << "] from: "; interval.print(DOUT, mri_); DOUT << "\n"; interval.removeRange(Start, End); - interval.addKillForValNum(0, Start-1); // odd # means phi node + interval.addKillForValNum(0, Start+1); // odd # means phi node DOUT << " RESULT: "; interval.print(DOUT, mri_); // Replace the interval with one of a NEW value number. Note that this Modified: llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp?rev=41118&r1=41117&r2=41118&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp (original) +++ llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp Thu Aug 16 02:24:22 2007 @@ -683,6 +683,8 @@ RHSValNoAssignments[0] = RHSValID; if (RHSVal0DefinedFromLHS != -1) { int LHSValId = LHSValNoAssignments[RHSVal0DefinedFromLHS]; + unsigned DefIdx = RHS.getDefForValNum(0); + LiveInterval::removeKill(ValueNumberInfo[LHSValId], DefIdx); LHS.addKills(ValueNumberInfo[LHSValId], RHS.getKillsForValNum(0)); } } else { @@ -797,6 +799,8 @@ if (LHSValId == -1) continue; unsigned RHSValId = RHSValNoAssignments[i]; + unsigned DefIdx = RHS.getDefForValNum(i); + LiveInterval::removeKill(ValueNumberInfo[RHSValId], DefIdx); LHS.addKills(ValueNumberInfo[RHSValId], RHS.getKillsForValNum(i)); } for (unsigned i = 0, e = LHSValsDefinedFromRHS.size(); i != e; ++i) { @@ -804,6 +808,8 @@ if (RHSValId == -1) continue; unsigned LHSValId = LHSValNoAssignments[i]; + unsigned DefIdx = LHS.getDefForValNum(i); + LiveInterval::removeKill(ValueNumberInfo[LHSValId], DefIdx); RHS.addKills(ValueNumberInfo[LHSValId], LHS.getKillsForValNum(i)); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits