diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp --- 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 @@ Function &F = const_cast(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(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(M), MAM); }