diff options
author | Evan Cheng <evan.cheng@apple.com> | 2012-01-07 03:35:48 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2012-01-07 03:35:48 +0000 |
commit | 6cc8d49885981be90db5f6a82fa9435d5fb339e7 (patch) | |
tree | 01cc45b89e1f266b7c30fabaf282164987794d7e /llvm/lib/CodeGen/BranchFolding.cpp | |
parent | 732ad80dbb21f100891691706e00ffabcca1f67d (diff) | |
download | bcm5719-llvm-6cc8d49885981be90db5f6a82fa9435d5fb339e7.tar.gz bcm5719-llvm-6cc8d49885981be90db5f6a82fa9435d5fb339e7.zip |
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.
llvm-svn: 147719
Diffstat (limited to 'llvm/lib/CodeGen/BranchFolding.cpp')
-rw-r--r-- | llvm/lib/CodeGen/BranchFolding.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/BranchFolding.cpp b/llvm/lib/CodeGen/BranchFolding.cpp index 29e8545030b..89894c37ee0 100644 --- a/llvm/lib/CodeGen/BranchFolding.cpp +++ b/llvm/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 |