1111//
1212// ===----------------------------------------------------------------------===//
1313
14+ #include " llvm/CodeGen/ExpandPostRAPseudos.h"
1415#include " llvm/CodeGen/MachineFunctionPass.h"
1516#include " llvm/CodeGen/MachineInstr.h"
1617#include " llvm/CodeGen/Passes.h"
2021#include " llvm/InitializePasses.h"
2122#include " llvm/Support/Debug.h"
2223#include " llvm/Support/raw_ostream.h"
24+ #include < llvm/CodeGen/MachineDominators.h>
25+ #include < llvm/CodeGen/MachineLoopInfo.h>
2326
2427using namespace llvm ;
2528
2629#define DEBUG_TYPE " postrapseudos"
2730
2831namespace {
29- struct ExpandPostRA : public MachineFunctionPass {
32+ struct ExpandPostRA {
33+
34+ bool run (MachineFunction&);
35+
3036private:
3137 const TargetRegisterInfo *TRI = nullptr ;
3238 const TargetInstrInfo *TII = nullptr ;
3339
34- public:
35- static char ID; // Pass identification, replacement for typeid
36- ExpandPostRA () : MachineFunctionPass(ID) {}
40+ bool LowerSubregToReg (MachineInstr *MI);
41+ };
42+
43+ struct ExpandPostRALegacy : public MachineFunctionPass {
44+ static char ID;
45+ ExpandPostRALegacy () : MachineFunctionPass(ID) {
46+ initializeExpandPostRALegacyPass (*PassRegistry::getPassRegistry ());
47+ }
3748
3849 void getAnalysisUsage (AnalysisUsage &AU) const override {
3950 AU.setPreservesCFG ();
@@ -44,16 +55,25 @@ struct ExpandPostRA : public MachineFunctionPass {
4455
4556 // / runOnMachineFunction - pass entry point
4657 bool runOnMachineFunction (MachineFunction&) override ;
47-
48- private:
49- bool LowerSubregToReg (MachineInstr *MI);
5058};
5159} // end anonymous namespace
5260
53- char ExpandPostRA::ID = 0 ;
54- char &llvm::ExpandPostRAPseudosID = ExpandPostRA::ID;
61+ PreservedAnalyses ExpandPostRAPseudosPass::run (MachineFunction &MF,
62+ MachineFunctionAnalysisManager &MFAM) {
63+ if (!ExpandPostRA ().run (MF))
64+ return PreservedAnalyses::all ();
65+
66+ auto PA = getMachineFunctionPassPreservedAnalyses ();
67+ PA.preserveSet <CFGAnalyses>();
68+ PA.preserve <MachineLoopAnalysis>();
69+ PA.preserve <MachineDominatorTreeAnalysis>();
70+ return PA;
71+ }
72+
73+ char ExpandPostRALegacy::ID = 0 ;
74+ char &llvm::ExpandPostRAPseudosID = ExpandPostRALegacy::ID;
5575
56- INITIALIZE_PASS (ExpandPostRA , DEBUG_TYPE,
76+ INITIALIZE_PASS (ExpandPostRALegacy , DEBUG_TYPE,
5777 " Post-RA pseudo instruction expansion pass" , false , false )
5878
5979bool ExpandPostRA::LowerSubregToReg(MachineInstr *MI) {
@@ -115,10 +135,14 @@ bool ExpandPostRA::LowerSubregToReg(MachineInstr *MI) {
115135 return true ;
116136}
117137
138+ bool ExpandPostRALegacy::runOnMachineFunction (MachineFunction &MF) {
139+ return ExpandPostRA ().run (MF);
140+ }
141+
118142// / runOnMachineFunction - Reduce subregister inserts and extracts to register
119143// / copies.
120144// /
121- bool ExpandPostRA::runOnMachineFunction (MachineFunction &MF) {
145+ bool ExpandPostRA::run (MachineFunction &MF) {
122146 LLVM_DEBUG (dbgs () << " Machine Function\n "
123147 << " ********** EXPANDING POST-RA PSEUDO INSTRS **********\n "
124148 << " ********** Function: " << MF.getName () << ' \n ' );
0 commit comments