From 70017fb01bba634649f7f3b1dee33c6cda0721d0 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Sat, 7 Jan 2012 03:35:48 +0000 Subject: Revert part of r147716. Looks like x87 instructions kill markers are all messed up so branch folding pass can't use the scavenger. :-( This doesn't breaks anything currently. It just means targets which do not carefully update kill markers cannot run post-ra scheduler (not new, it has always been the case). We should fix this at some point since it's really hacky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147719 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/BranchFolding.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'lib/CodeGen/BranchFolding.cpp') diff --git a/lib/CodeGen/BranchFolding.cpp b/lib/CodeGen/BranchFolding.cpp index 29e8545030..89894c37ee 100644 --- a/lib/CodeGen/BranchFolding.cpp +++ b/lib/CodeGen/BranchFolding.cpp @@ -180,7 +180,7 @@ bool BranchFolder::OptimizeFunction(MachineFunction &MF, TRI = tri; MMI = mmi; - RS = new RegScavenger(); + RS = TRI->requiresRegisterScavenging(MF) ? new RegScavenger() : NULL; // Fix CFG. The later algorithms expect it to be right. bool MadeChange = false; @@ -368,14 +368,16 @@ static unsigned ComputeCommonTailLength(MachineBasicBlock *MBB1, void BranchFolder::MaintainLiveIns(MachineBasicBlock *CurMBB, MachineBasicBlock *NewMBB) { - RS->enterBasicBlock(CurMBB); - if (!CurMBB->empty()) - RS->forward(prior(CurMBB->end())); - BitVector RegsLiveAtExit(TRI->getNumRegs()); - RS->getRegsUsed(RegsLiveAtExit, false); - for (unsigned int i = 0, e = TRI->getNumRegs(); i != e; i++) - if (RegsLiveAtExit[i]) - NewMBB->addLiveIn(i); + if (RS) { + RS->enterBasicBlock(CurMBB); + if (!CurMBB->empty()) + RS->forward(prior(CurMBB->end())); + BitVector RegsLiveAtExit(TRI->getNumRegs()); + RS->getRegsUsed(RegsLiveAtExit, false); + for (unsigned int i = 0, e = TRI->getNumRegs(); i != e; i++) + if (RegsLiveAtExit[i]) + NewMBB->addLiveIn(i); + } } /// ReplaceTailWithBranchTo - Delete the instruction OldInst and everything -- cgit v1.2.3