1111//
1212// ===----------------------------------------------------------------------===//
1313
14+ #include " llvm/CodeGen/ExpandPostRAPseudos.h"
15+ #include " llvm/CodeGen/MachineDominators.h"
1416#include " llvm/CodeGen/MachineFunctionPass.h"
1517#include " llvm/CodeGen/MachineInstr.h"
18+ #include " llvm/CodeGen/MachineLoopInfo.h"
1619#include " llvm/CodeGen/Passes.h"
1720#include " llvm/CodeGen/TargetInstrInfo.h"
1821#include " llvm/CodeGen/TargetRegisterInfo.h"
@@ -26,14 +29,21 @@ using namespace llvm;
2629#define DEBUG_TYPE " postrapseudos"
2730
2831namespace {
29- struct ExpandPostRA : public MachineFunctionPass {
32+ struct ExpandPostRA {
33+ bool run (MachineFunction &);
34+
3035private:
3136 const TargetRegisterInfo *TRI = nullptr ;
3237 const TargetInstrInfo *TII = nullptr ;
3338
34- public:
35- static char ID; // Pass identification, replacement for typeid
36- ExpandPostRA () : MachineFunctionPass(ID) {}
39+ bool LowerSubregToReg (MachineInstr *MI);
40+ };
41+
42+ struct ExpandPostRALegacy : public MachineFunctionPass {
43+ static char ID;
44+ ExpandPostRALegacy () : MachineFunctionPass(ID) {
45+ initializeExpandPostRALegacyPass (*PassRegistry::getPassRegistry ());
46+ }
3747
3848 void getAnalysisUsage (AnalysisUsage &AU) const override {
3949 AU.setPreservesCFG ();
@@ -43,17 +53,26 @@ struct ExpandPostRA : public MachineFunctionPass {
4353 }
4454
4555 // / runOnMachineFunction - pass entry point
46- bool runOnMachineFunction (MachineFunction&) override ;
47-
48- private:
49- bool LowerSubregToReg (MachineInstr *MI);
56+ bool runOnMachineFunction (MachineFunction &) override ;
5057};
5158} // end anonymous namespace
5259
53- char ExpandPostRA::ID = 0 ;
54- char &llvm::ExpandPostRAPseudosID = ExpandPostRA::ID;
60+ PreservedAnalyses
61+ ExpandPostRAPseudosPass::run (MachineFunction &MF,
62+ MachineFunctionAnalysisManager &MFAM) {
63+ if (!ExpandPostRA ().run (MF))
64+ return PreservedAnalyses::all ();
65+
66+ return getMachineFunctionPassPreservedAnalyses ()
67+ .preserveSet <CFGAnalyses>()
68+ .preserve <MachineLoopAnalysis>()
69+ .preserve <MachineDominatorTreeAnalysis>();
70+ }
71+
72+ char ExpandPostRALegacy::ID = 0 ;
73+ char &llvm::ExpandPostRAPseudosID = ExpandPostRALegacy::ID;
5574
56- INITIALIZE_PASS (ExpandPostRA , DEBUG_TYPE,
75+ INITIALIZE_PASS (ExpandPostRALegacy , DEBUG_TYPE,
5776 " Post-RA pseudo instruction expansion pass" , false , false )
5877
5978bool ExpandPostRA::LowerSubregToReg(MachineInstr *MI) {
@@ -115,10 +134,14 @@ bool ExpandPostRA::LowerSubregToReg(MachineInstr *MI) {
115134 return true ;
116135}
117136
137+ bool ExpandPostRALegacy::runOnMachineFunction (MachineFunction &MF) {
138+ return ExpandPostRA ().run (MF);
139+ }
140+
118141// / runOnMachineFunction - Reduce subregister inserts and extracts to register
119142// / copies.
120143// /
121- bool ExpandPostRA::runOnMachineFunction (MachineFunction &MF) {
144+ bool ExpandPostRA::run (MachineFunction &MF) {
122145 LLVM_DEBUG (dbgs () << " Machine Function\n "
123146 << " ********** EXPANDING POST-RA PSEUDO INSTRS **********\n "
124147 << " ********** Function: " << MF.getName () << ' \n ' );
0 commit comments