diff options
Diffstat (limited to 'lib/Target/SystemZ/SystemZLongBranch.cpp')
-rw-r--r-- | lib/Target/SystemZ/SystemZLongBranch.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/Target/SystemZ/SystemZLongBranch.cpp b/lib/Target/SystemZ/SystemZLongBranch.cpp index 8dab44e7f8af5..a24d47d2d16b9 100644 --- a/lib/Target/SystemZ/SystemZLongBranch.cpp +++ b/lib/Target/SystemZ/SystemZLongBranch.cpp @@ -58,7 +58,6 @@ #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/IR/Function.h" -#include "llvm/Support/CommandLine.h" #include "llvm/Support/MathExtras.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" @@ -139,12 +138,16 @@ public: } bool runOnMachineFunction(MachineFunction &F) override; + MachineFunctionProperties getRequiredProperties() const override { + return MachineFunctionProperties().set( + MachineFunctionProperties::Property::AllVRegsAllocated); + } private: void skipNonTerminators(BlockPosition &Position, MBBInfo &Block); void skipTerminator(BlockPosition &Position, TerminatorInfo &Terminator, bool AssumeRelaxed); - TerminatorInfo describeTerminator(MachineInstr *MI); + TerminatorInfo describeTerminator(MachineInstr &MI); uint64_t initMBBInfo(); bool mustRelaxBranch(const TerminatorInfo &Terminator, uint64_t Address); bool mustRelaxABranch(); @@ -207,11 +210,11 @@ void SystemZLongBranch::skipTerminator(BlockPosition &Position, } // Return a description of terminator instruction MI. -TerminatorInfo SystemZLongBranch::describeTerminator(MachineInstr *MI) { +TerminatorInfo SystemZLongBranch::describeTerminator(MachineInstr &MI) { TerminatorInfo Terminator; Terminator.Size = TII->getInstSizeInBytes(MI); - if (MI->isConditionalBranch() || MI->isUnconditionalBranch()) { - switch (MI->getOpcode()) { + if (MI.isConditionalBranch() || MI.isUnconditionalBranch()) { + switch (MI.getOpcode()) { case SystemZ::J: // Relaxes to JG, which is 2 bytes longer. Terminator.ExtraRelaxSize = 2; @@ -248,7 +251,7 @@ TerminatorInfo SystemZLongBranch::describeTerminator(MachineInstr *MI) { default: llvm_unreachable("Unrecognized branch instruction"); } - Terminator.Branch = MI; + Terminator.Branch = &MI; Terminator.TargetBlock = TII->getBranchInfo(MI).Target->getMBB()->getNumber(); } @@ -280,7 +283,7 @@ uint64_t SystemZLongBranch::initMBBInfo() { MachineBasicBlock::iterator MI = MBB->begin(); MachineBasicBlock::iterator End = MBB->end(); while (MI != End && !MI->isTerminator()) { - Block.Size += TII->getInstSizeInBytes(MI); + Block.Size += TII->getInstSizeInBytes(*MI); ++MI; } skipNonTerminators(Position, Block); @@ -289,7 +292,7 @@ uint64_t SystemZLongBranch::initMBBInfo() { while (MI != End) { if (!MI->isDebugValue()) { assert(MI->isTerminator() && "Terminator followed by non-terminator"); - Terminators.push_back(describeTerminator(MI)); + Terminators.push_back(describeTerminator(*MI)); skipTerminator(Position, Terminators.back(), false); ++Block.NumTerminators; } |