[llvm] [Reg2Mem] Add legacy pass wrapping Reg2Mem (PR #111024)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 4 01:03:12 PDT 2024
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>,
Nathan =?utf-8?q?Gauër?= <brioche at google.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/111024 at github.com>
================
@@ -105,3 +106,52 @@ PreservedAnalyses RegToMemPass::run(Function &F, FunctionAnalysisManager &AM) {
PA.preserve<LoopAnalysis>();
return PA;
}
+
+namespace llvm {
+
+void initializeRegToMemWrapperPassPass(PassRegistry &);
+
+class RegToMemWrapperPass : public FunctionPass {
+public:
+ static char ID;
+
+ RegToMemWrapperPass();
+
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.setPreservesAll();
+
+ AU.addPreserved<DominatorTreeWrapperPass>();
+ AU.addRequired<DominatorTreeWrapperPass>();
+
+ AU.addPreserved<LoopInfoWrapperPass>();
+ AU.addRequired<LoopInfoWrapperPass>();
+ }
+
+ bool runOnFunction(Function &F) override;
+};
+
+FunctionPass *createRegToMemWrapperPass();
+
+} // namespace llvm
+
+INITIALIZE_PASS_BEGIN(RegToMemWrapperPass, "reg2mem", "", true, true)
+INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass);
+INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass);
+INITIALIZE_PASS_END(RegToMemWrapperPass, "reg2mem", "", true, true)
+
+char RegToMemWrapperPass::ID = 0;
+
+RegToMemWrapperPass::RegToMemWrapperPass() : FunctionPass(ID) {}
+
+bool RegToMemWrapperPass::runOnFunction(Function &F) {
+ DominatorTree *DT = &getAnalysis<DominatorTreeWrapperPass>().getDomTree();
+ LoopInfo *LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
+
+ unsigned N = SplitAllCriticalEdges(F, CriticalEdgeSplittingOptions(DT, LI));
+ bool Changed = runPass(F);
+ return N != 0 || Changed;
+}
----------------
nikic wrote:
You can move these functions into the class declaration, not much point in moving them out of line if its the same file.
https://github.com/llvm/llvm-project/pull/111024
More information about the llvm-commits
mailing list