[llvm] 525ed98 - [Lint] Use new PM instead of legacy PM in lintFunction and lintModule
Bjorn Pettersson via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 6 10:23:21 PST 2023
Author: Bjorn Pettersson
Date: 2023-02-06T19:21:23+01:00
New Revision: 525ed98be483188db6dc3bb69cecd0123148ceca
URL: https://github.com/llvm/llvm-project/commit/525ed98be483188db6dc3bb69cecd0123148ceca
DIFF: https://github.com/llvm/llvm-project/commit/525ed98be483188db6dc3bb69cecd0123148ceca.diff
LOG: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule
There are some helpers in the Lint analysis pass that will setup
a pass manager and then run the Lint pass on a given Function/Module.
Those have been using the LegacyPassManager, but as a small step
towards removing the deprecated legacy pass manager this patch is
changing those helpers into using the new pass manager instead.
No idea if anyone is really is using those helpers. Maybe an
alternative had been to just remove them. There is at least no unit
tests or similar that verifies that they work, so I validated this
patch by using a hacked opt binary that called those functions
before running the normal pipeline.
Differential Revision: https://reviews.llvm.org/D143388
Added:
Modified:
llvm/lib/Analysis/Lint.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp
index d3120a41ac27..cb281256373f 100644
--- a/llvm/lib/Analysis/Lint.cpp
+++ b/llvm/lib/Analysis/Lint.cpp
@@ -60,13 +60,13 @@
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
-#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
+#include "llvm/Passes/PassBuilder.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Support/raw_ostream.h"
@@ -771,17 +771,33 @@ void llvm::lintFunction(const Function &f) {
Function &F = const_cast<Function &>(f);
assert(!F.isDeclaration() && "Cannot lint external functions");
- legacy::FunctionPassManager FPM(F.getParent());
- auto *V = new LintLegacyPass();
- FPM.add(V);
- FPM.run(F);
+ PassBuilder PB;
+ LoopAnalysisManager LAM;
+ FunctionAnalysisManager FAM;
+ CGSCCAnalysisManager CGAM;
+ ModuleAnalysisManager MAM;
+ PB.registerModuleAnalyses(MAM);
+ PB.registerFunctionAnalyses(FAM);
+ PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
+
+ FunctionPassManager FPM;
+ FPM.addPass(LintPass());
+ FPM.run(F, FAM);
}
/// lintModule - Check a module for errors, printing messages on stderr.
///
void llvm::lintModule(const Module &M) {
- legacy::PassManager PM;
- auto *V = new LintLegacyPass();
- PM.add(V);
- PM.run(const_cast<Module &>(M));
+ PassBuilder PB;
+ LoopAnalysisManager LAM;
+ FunctionAnalysisManager FAM;
+ CGSCCAnalysisManager CGAM;
+ ModuleAnalysisManager MAM;
+ PB.registerModuleAnalyses(MAM);
+ PB.registerFunctionAnalyses(FAM);
+ PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
+
+ ModulePassManager MPM;
+ MPM.addPass(createModuleToFunctionPassAdaptor(LintPass()));
+ MPM.run(const_cast<Module &>(M), MAM);
}
More information about the llvm-commits
mailing list