[llvm] [CodeGen][NewPM] Port OptimizePHIs to NPM (PR #113433)
Christudasan Devadasan via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 23 03:20:30 PDT 2024
================
@@ -33,47 +34,65 @@ STATISTIC(NumDeadPHICycles, "Number of dead PHI cycles");
namespace {
- class OptimizePHIs : public MachineFunctionPass {
- MachineRegisterInfo *MRI = nullptr;
- const TargetInstrInfo *TII = nullptr;
+class OptimizePHIs {
+ MachineRegisterInfo *MRI = nullptr;
+ const TargetInstrInfo *TII = nullptr;
- public:
- static char ID; // Pass identification
+public:
+ bool run(MachineFunction &Fn);
- OptimizePHIs() : MachineFunctionPass(ID) {
- initializeOptimizePHIsPass(*PassRegistry::getPassRegistry());
- }
-
- bool runOnMachineFunction(MachineFunction &Fn) override;
+private:
+ using InstrSet = SmallPtrSet<MachineInstr *, 16>;
+ using InstrSetIterator = SmallPtrSetIterator<MachineInstr *>;
- void getAnalysisUsage(AnalysisUsage &AU) const override {
- AU.setPreservesCFG();
- MachineFunctionPass::getAnalysisUsage(AU);
- }
+ bool IsSingleValuePHICycle(MachineInstr *MI, unsigned &SingleValReg,
+ InstrSet &PHIsInCycle);
+ bool IsDeadPHICycle(MachineInstr *MI, InstrSet &PHIsInCycle);
+ bool OptimizeBB(MachineBasicBlock &MBB);
+};
- private:
- using InstrSet = SmallPtrSet<MachineInstr *, 16>;
- using InstrSetIterator = SmallPtrSetIterator<MachineInstr *>;
+class OptimizePHIsLegacy : public MachineFunctionPass {
+public:
+ static char ID;
+ OptimizePHIsLegacy() : MachineFunctionPass(ID) {
+ initializeOptimizePHIsLegacyPass(*PassRegistry::getPassRegistry());
+ }
- bool IsSingleValuePHICycle(MachineInstr *MI, unsigned &SingleValReg,
- InstrSet &PHIsInCycle);
- bool IsDeadPHICycle(MachineInstr *MI, InstrSet &PHIsInCycle);
- bool OptimizeBB(MachineBasicBlock &MBB);
- };
+ bool runOnMachineFunction(MachineFunction &MF) override {
+ if (skipFunction(MF.getFunction()))
+ return false;
+ OptimizePHIs OP;
+ return OP.run(MF);
+ }
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.setPreservesCFG();
+ MachineFunctionPass::getAnalysisUsage(AU);
+ }
+};
} // end anonymous namespace
-char OptimizePHIs::ID = 0;
+char OptimizePHIsLegacy::ID = 0;
-char &llvm::OptimizePHIsID = OptimizePHIs::ID;
+char &llvm::OptimizePHIsLegacyID = OptimizePHIsLegacy::ID;
-INITIALIZE_PASS(OptimizePHIs, DEBUG_TYPE,
+INITIALIZE_PASS(OptimizePHIsLegacy, DEBUG_TYPE,
"Optimize machine instruction PHIs", false, false)
-bool OptimizePHIs::runOnMachineFunction(MachineFunction &Fn) {
- if (skipFunction(Fn.getFunction()))
- return false;
+PreservedAnalyses OptimizePHIsPass::run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM) {
+ if (MF.getFunction().hasOptNone())
+ return PreservedAnalyses::all();
+
+ OptimizePHIs OP;
+ if (!OP.run(MF))
+ return PreservedAnalyses::all();
+ auto PA = getMachineFunctionPassPreservedAnalyses();
+ PA.preserveSet<CFGAnalyses>();
+ return PA;
+}
+bool OptimizePHIs::run(MachineFunction &Fn) {
----------------
cdevadas wrote:
Ditto
https://github.com/llvm/llvm-project/pull/113433
More information about the llvm-commits
mailing list