Revert part of r147716. Looks like x87 instructions kill markers are all messed
authorEvan Cheng <evan.cheng@apple.com>
Sat, 7 Jan 2012 03:35:48 +0000 (03:35 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sat, 7 Jan 2012 03:35:48 +0000 (03:35 +0000)
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

index 29e8545030be63148538e75c8cff9f8e8082f879..89894c37ee0e629718783050ad0344e8583e7c4f 100644 (file)
@@ -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