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

Reply via email to