|
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