|
6 | 6 | //
|
7 | 7 | //===----------------------------------------------------------------------===//
|
8 | 8 |
|
| 9 | +#include "llvm/CodeGen/BranchRelaxation.h" |
9 | 10 | #include "llvm/ADT/SmallVector.h"
|
10 | 11 | #include "llvm/ADT/Statistic.h"
|
11 | 12 | #include "llvm/CodeGen/LivePhysRegs.h"
|
@@ -44,7 +45,7 @@ STATISTIC(NumUnconditionalRelaxed, "Number of unconditional branches relaxed");
|
44 | 45 |
|
45 | 46 | namespace {
|
46 | 47 |
|
47 |
| -class BranchRelaxation : public MachineFunctionPass { |
| 48 | +class BranchRelaxation { |
48 | 49 | /// BasicBlockInfo - Information about the offset and size of a single
|
49 | 50 | /// basic block.
|
50 | 51 | struct BasicBlockInfo {
|
@@ -115,23 +116,31 @@ class BranchRelaxation : public MachineFunctionPass {
|
115 | 116 | void dumpBBs();
|
116 | 117 | void verify();
|
117 | 118 |
|
| 119 | +public: |
| 120 | + bool run(MachineFunction &MF); |
| 121 | +}; |
| 122 | + |
| 123 | +class BranchRelaxationLegacy : public MachineFunctionPass { |
118 | 124 | public:
|
119 | 125 | static char ID;
|
120 | 126 |
|
121 |
| - BranchRelaxation() : MachineFunctionPass(ID) {} |
| 127 | + BranchRelaxationLegacy() : MachineFunctionPass(ID) {} |
122 | 128 |
|
123 |
| - bool runOnMachineFunction(MachineFunction &MF) override; |
| 129 | + bool runOnMachineFunction(MachineFunction &MF) override { |
| 130 | + return BranchRelaxation().run(MF); |
| 131 | + } |
124 | 132 |
|
125 | 133 | StringRef getPassName() const override { return BRANCH_RELAX_NAME; }
|
126 | 134 | };
|
127 | 135 |
|
128 | 136 | } // end anonymous namespace
|
129 | 137 |
|
130 |
| -char BranchRelaxation::ID = 0; |
| 138 | +char BranchRelaxationLegacy::ID = 0; |
131 | 139 |
|
132 |
| -char &llvm::BranchRelaxationPassID = BranchRelaxation::ID; |
| 140 | +char &llvm::BranchRelaxationPassID = BranchRelaxationLegacy::ID; |
133 | 141 |
|
134 |
| -INITIALIZE_PASS(BranchRelaxation, DEBUG_TYPE, BRANCH_RELAX_NAME, false, false) |
| 142 | +INITIALIZE_PASS(BranchRelaxationLegacy, DEBUG_TYPE, BRANCH_RELAX_NAME, false, |
| 143 | + false) |
135 | 144 |
|
136 | 145 | /// verify - check BBOffsets, BBSizes, alignment of islands
|
137 | 146 | void BranchRelaxation::verify() {
|
@@ -744,7 +753,16 @@ bool BranchRelaxation::relaxBranchInstructions() {
|
744 | 753 | return Changed;
|
745 | 754 | }
|
746 | 755 |
|
747 |
| -bool BranchRelaxation::runOnMachineFunction(MachineFunction &mf) { |
| 756 | +PreservedAnalyses |
| 757 | +BranchRelaxationPass::run(MachineFunction &MF, |
| 758 | + MachineFunctionAnalysisManager &MFAM) { |
| 759 | + if (!BranchRelaxation().run(MF)) |
| 760 | + return PreservedAnalyses::all(); |
| 761 | + |
| 762 | + return getMachineFunctionPassPreservedAnalyses(); |
| 763 | +} |
| 764 | + |
| 765 | +bool BranchRelaxation::run(MachineFunction &mf) { |
748 | 766 | MF = &mf;
|
749 | 767 |
|
750 | 768 | LLVM_DEBUG(dbgs() << "***** BranchRelaxation *****\n");
|
|
0 commit comments