diff options
Diffstat (limited to 'lib/Target/PowerPC/PPCEarlyReturn.cpp')
| -rw-r--r-- | lib/Target/PowerPC/PPCEarlyReturn.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/lib/Target/PowerPC/PPCEarlyReturn.cpp b/lib/Target/PowerPC/PPCEarlyReturn.cpp index 7cb1bb54c7251..fcd2f50e1e3dc 100644 --- a/lib/Target/PowerPC/PPCEarlyReturn.cpp +++ b/lib/Target/PowerPC/PPCEarlyReturn.cpp @@ -12,10 +12,10 @@ // //===----------------------------------------------------------------------===// -#include "PPCInstrInfo.h" -#include "MCTargetDesc/PPCPredicates.h" #include "PPC.h" +#include "MCTargetDesc/PPCPredicates.h" #include "PPCInstrBuilder.h" +#include "PPCInstrInfo.h" #include "PPCMachineFunctionInfo.h" #include "PPCTargetMachine.h" #include "llvm/ADT/STLExtras.h" @@ -26,7 +26,6 @@ #include "llvm/CodeGen/MachineMemOperand.h" #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/MC/MCAsmInfo.h" -#include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/TargetRegistry.h" @@ -84,7 +83,7 @@ protected: // This is an unconditional branch to the return. Replace the // branch with a blr. BuildMI(**PI, J, J->getDebugLoc(), TII->get(I->getOpcode())) - .copyImplicitOps(I); + .copyImplicitOps(*I); MachineBasicBlock::iterator K = J--; K->eraseFromParent(); BlockChanged = true; @@ -98,7 +97,7 @@ protected: BuildMI(**PI, J, J->getDebugLoc(), TII->get(PPC::BCCLR)) .addImm(J->getOperand(0).getImm()) .addReg(J->getOperand(1).getReg()) - .copyImplicitOps(I); + .copyImplicitOps(*I); MachineBasicBlock::iterator K = J--; K->eraseFromParent(); BlockChanged = true; @@ -113,7 +112,7 @@ protected: **PI, J, J->getDebugLoc(), TII->get(J->getOpcode() == PPC::BC ? PPC::BCLR : PPC::BCLRn)) .addReg(J->getOperand(0).getReg()) - .copyImplicitOps(I); + .copyImplicitOps(*I); MachineBasicBlock::iterator K = J--; K->eraseFromParent(); BlockChanged = true; @@ -174,6 +173,9 @@ protected: public: bool runOnMachineFunction(MachineFunction &MF) override { + if (skipFunction(*MF.getFunction())) + return false; + TII = MF.getSubtarget().getInstrInfo(); bool Changed = false; @@ -192,6 +194,11 @@ public: return Changed; } + MachineFunctionProperties getRequiredProperties() const override { + return MachineFunctionProperties().set( + MachineFunctionProperties::Property::AllVRegsAllocated); + } + void getAnalysisUsage(AnalysisUsage &AU) const override { MachineFunctionPass::getAnalysisUsage(AU); } @@ -204,4 +211,3 @@ INITIALIZE_PASS(PPCEarlyReturn, DEBUG_TYPE, char PPCEarlyReturn::ID = 0; FunctionPass* llvm::createPPCEarlyReturnPass() { return new PPCEarlyReturn(); } - |
