diff --git a/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp b/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp --- a/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp +++ b/clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp @@ -89,7 +89,10 @@ Builder.SizeLevel = SizeLevel; Builder.Inliner = createFunctionInliningPass(OptLevel, SizeLevel, false); Builder.LoopVectorize = true; - Builder.populateModulePassManager(MPM); +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + Builder.populateModulePassManagerLegacy(MPM); } // Mimics the opt tool to run an optimization pass over the provided IR diff --git a/llvm/bindings/go/llvm/transforms_pmbuilder.go b/llvm/bindings/go/llvm/transforms_pmbuilder.go --- a/llvm/bindings/go/llvm/transforms_pmbuilder.go +++ b/llvm/bindings/go/llvm/transforms_pmbuilder.go @@ -36,7 +36,7 @@ } func (pmb PassManagerBuilder) Populate(pm PassManager) { - C.LLVMPassManagerBuilderPopulateModulePassManager(pmb.C, pm.C) + C.LLVMPassManagerBuilderPopulateModulePassManagerLegacy(pmb.C, pm.C) } func (pmb PassManagerBuilder) PopulateFunc(pm PassManager) { diff --git a/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli b/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli --- a/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli +++ b/llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli @@ -42,7 +42,7 @@ : [ `Function ] Llvm.PassManager.t -> t -> unit = "llvm_pmbuilder_populate_function_pass_manager" -(** See the [llvm::PassManagerBuilder::populateModulePassManager] function. *) +(** See the [llvm::PassManagerBuilder::populateModulePassManagerLegacy] function. *) external populate_module_pass_manager : [ `Module ] Llvm.PassManager.t -> t -> unit = "llvm_pmbuilder_populate_module_pass_manager" diff --git a/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c b/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c --- a/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c +++ b/llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c @@ -87,6 +87,9 @@ /* [ `Module ] Llvm.PassManager.t -> t -> unit */ value llvm_pmbuilder_populate_module_pass_manager(LLVMPassManagerRef PM, value PMB) { - LLVMPassManagerBuilderPopulateModulePassManager(PMBuilder_val(PMB), PM); +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + LLVMPassManagerBuilderPopulateModulePassManagerLegacy(PMBuilder_val(PMB), PM); return Val_unit; } diff --git a/llvm/include/llvm-c/Transforms/PassManagerBuilder.h b/llvm/include/llvm-c/Transforms/PassManagerBuilder.h --- a/llvm/include/llvm-c/Transforms/PassManagerBuilder.h +++ b/llvm/include/llvm-c/Transforms/PassManagerBuilder.h @@ -67,10 +67,12 @@ LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM); -/** See llvm::PassManagerBuilder::populateModulePassManager. */ -void -LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, - LLVMPassManagerRef PM); +/** See llvm::PassManagerBuilder::populateModulePassManagerLegacy. */ +#ifdef __GNUC__ +__attribute__((deprecated("Migrate to new pass manager for optimization pipeline. This header will be removed in LLVM 16."))) +#endif +void LLVMPassManagerBuilderPopulateModulePassManagerLegacy( + LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM); /** * @} diff --git a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h --- a/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h +++ b/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h @@ -37,7 +37,7 @@ /// PassManagerBuilder Builder; /// Builder.OptLevel = 2; /// Builder.populateFunctionPassManager(FPM); -/// Builder.populateModulePassManager(MPM); +/// Builder.populateModulePassManagerLegacy(MPM); /// /// In addition to setting up the basic passes, PassManagerBuilder allows /// frontends to vend a plugin API, where plugins are allowed to add extensions @@ -222,8 +222,14 @@ /// generated. The idea is to reduce the size of the IR in memory. void populateFunctionPassManager(legacy::FunctionPassManager &FPM); - /// populateModulePassManager - This sets up the primary pass manager. - void populateModulePassManager(legacy::PassManagerBase &MPM); + /// Set up the primary pass manager. +#ifdef __GNUC__ + [[deprecated( + "Migrate to new pass manager for " + "optimization pipeline. This class will be removed in LLVM 16.")]] +#endif + void + populateModulePassManagerLegacy(legacy::PassManagerBase &MPM); }; /// Registers a function for adding a standard set of passes. This should be diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -605,7 +605,7 @@ PM.add(createInstructionCombiningPass()); } -void PassManagerBuilder::populateModulePassManager( +void PassManagerBuilder::populateModulePassManagerLegacy( legacy::PassManagerBase &MPM) { MPM.add(createAnnotation2MetadataLegacyPass()); @@ -1150,10 +1150,12 @@ Builder->populateFunctionPassManager(*FPM); } -void -LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, - LLVMPassManagerRef PM) { +void LLVMPassManagerBuilderPopulateModulePassManagerLegacy( + LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM) { PassManagerBuilder *Builder = unwrap(PMB); legacy::PassManagerBase *MPM = unwrap(PM); - Builder->populateModulePassManager(*MPM); +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + Builder->populateModulePassManagerLegacy(*MPM); } diff --git a/llvm/tools/bugpoint/bugpoint.cpp b/llvm/tools/bugpoint/bugpoint.cpp --- a/llvm/tools/bugpoint/bugpoint.cpp +++ b/llvm/tools/bugpoint/bugpoint.cpp @@ -128,7 +128,10 @@ Builder.Inliner = createAlwaysInlinerLegacyPass(); Builder.populateFunctionPassManager(FPM); - Builder.populateModulePassManager(FPM); +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + Builder.populateModulePassManagerLegacy(FPM); } #define HANDLE_EXTENSION(Ext) \ diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp --- a/llvm/tools/opt/opt.cpp +++ b/llvm/tools/opt/opt.cpp @@ -401,7 +401,10 @@ } Builder.populateFunctionPassManager(FPM); - Builder.populateModulePassManager(MPM); +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + Builder.populateModulePassManagerLegacy(MPM); } //===----------------------------------------------------------------------===// diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp b/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp --- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp +++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp @@ -306,8 +306,12 @@ LLVMPassManagerBuilderPopulateFunctionPassManager(passBuilder, functionPasses); - LLVMPassManagerBuilderPopulateModulePassManager(passBuilder, modulePasses); - +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + LLVMPassManagerBuilderPopulateModulePassManagerLegacy(passBuilder, + modulePasses); + LLVMPassManagerBuilderDispose(passBuilder); LLVMInitializeFunctionPassManager(functionPasses); diff --git a/polly/lib/CodeGen/PPCGCodeGeneration.cpp b/polly/lib/CodeGen/PPCGCodeGeneration.cpp --- a/polly/lib/CodeGen/PPCGCodeGeneration.cpp +++ b/polly/lib/CodeGen/PPCGCodeGeneration.cpp @@ -2492,7 +2492,10 @@ PassManagerBuilder PassBuilder; PassBuilder.OptLevel = 3; PassBuilder.SizeLevel = 0; - PassBuilder.populateModulePassManager(OptPasses); +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + PassBuilder.populateModulePassManagerLegacy(OptPasses); OptPasses.run(*GPUModule); }