MaskRay created this revision. MaskRay added reviewers: aeubanks, nikic. Herald added a reviewer: deadalnix. Herald added subscribers: ormris, StephenFan, kbarton, hiraditya, nemanjai. Herald added a reviewer: bollu. Herald added a reviewer: ctetreau. Herald added a reviewer: ctetreau. Herald added a reviewer: ctetreau. Herald added a reviewer: ctetreau. Herald added a project: All. MaskRay requested review of this revision. Herald added projects: clang, LLVM. Herald added subscribers: llvm-commits, cfe-commits.
Using LLVM's legacy PM for optimization pipeline was deprecated in 13.0.0 <https://releases.llvm.org/13.0.0/docs/ReleaseNotes.html#changes-to-the-llvm-ir> and some rarely used pieces are being removed. populateModulePassManager is a main API indicating legacy usage. Rename and deprecate it to make users aware. Use a function attribute instead of LLVM_ATTRIBUTE_DEPRECATED to allow warning suppression with #pragma without worrying about MSVC. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D124063 Files: clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp llvm/bindings/go/llvm/transforms_pmbuilder.go llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c llvm/include/llvm-c/Transforms/PassManagerBuilder.h llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h llvm/lib/Transforms/IPO/PassManagerBuilder.cpp llvm/tools/bugpoint/bugpoint.cpp llvm/tools/opt/opt.cpp llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp polly/lib/CodeGen/PPCGCodeGeneration.cpp
Index: polly/lib/CodeGen/PPCGCodeGeneration.cpp =================================================================== --- polly/lib/CodeGen/PPCGCodeGeneration.cpp +++ 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); } Index: llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp =================================================================== --- llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp +++ 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); Index: llvm/tools/opt/opt.cpp =================================================================== --- llvm/tools/opt/opt.cpp +++ 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); } //===----------------------------------------------------------------------===// Index: llvm/tools/bugpoint/bugpoint.cpp =================================================================== --- llvm/tools/bugpoint/bugpoint.cpp +++ 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) \ Index: llvm/lib/Transforms/IPO/PassManagerBuilder.cpp =================================================================== --- llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ 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); } Index: llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h =================================================================== --- llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h +++ 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 Index: llvm/include/llvm-c/Transforms/PassManagerBuilder.h =================================================================== --- llvm/include/llvm-c/Transforms/PassManagerBuilder.h +++ 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); /** * @} Index: llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c =================================================================== --- llvm/bindings/ocaml/transforms/passmgr_builder/passmgr_builder_ocaml.c +++ 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; } Index: llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli =================================================================== --- llvm/bindings/ocaml/transforms/passmgr_builder/llvm_passmgr_builder.mli +++ 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" Index: llvm/bindings/go/llvm/transforms_pmbuilder.go =================================================================== --- llvm/bindings/go/llvm/transforms_pmbuilder.go +++ 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) { Index: clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp =================================================================== --- clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp +++ 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
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits