[PATCH] D92916: [LLD][gold] Add -plugin-opt=no-new-pass-manager

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 8 23:01:18 PST 2020


MaskRay created this revision.
MaskRay added reviewers: aeubanks, asbirlea, grimar, tejohnson, ychen.
Herald added subscribers: dang, steven_wu, hiraditya, arichardson, emaste.
Herald added a reviewer: espindola.
MaskRay requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

-DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=on configured LLD and LLVMgold.so
will default to use the new pass manager by default. Add an option to
use the legacy pass manager. This will also be used by the Clang driver
when -fno-pass-manager (D92915 <https://reviews.llvm.org/D92915>) / -fno-experimental-new-pass-manager is set.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D92916

Files:
  lld/ELF/Options.td
  lld/test/ELF/lto/new-pass-manager.ll
  llvm/test/tools/gold/X86/new-pm.ll
  llvm/tools/gold/gold-plugin.cpp


Index: llvm/tools/gold/gold-plugin.cpp
===================================================================
--- llvm/tools/gold/gold-plugin.cpp
+++ llvm/tools/gold/gold-plugin.cpp
@@ -288,6 +288,8 @@
       cs_profile_path = std::string(opt);
     } else if (opt == "new-pass-manager") {
       new_pass_manager = true;
+    } else if (opt == "no-new-pass-manager") {
+      new_pass_manager = false;
     } else if (opt == "debug-pass-manager") {
       debug_pass_manager = true;
     } else if (opt == "whole-program-visibility") {
Index: llvm/test/tools/gold/X86/new-pm.ll
===================================================================
--- llvm/test/tools/gold/X86/new-pm.ll
+++ llvm/test/tools/gold/X86/new-pm.ll
@@ -10,6 +10,12 @@
 
 ; CHECK: Starting llvm::Module pass manager run
 
+;; --plugin-opt=debug-pass-manager is a no-op for the legacy pass manager.
+; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \
+; RUN:     --plugin-opt=thinlto \
+; RUN:     --plugin-opt=no-new-pass-manager --plugin-opt=debug-pass-manager \
+; RUN:     -o /dev/null %t.o 2>&1 | count 0
+
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
Index: lld/test/ELF/lto/new-pass-manager.ll
===================================================================
--- lld/test/ELF/lto/new-pass-manager.ll
+++ lld/test/ELF/lto/new-pass-manager.ll
@@ -7,6 +7,7 @@
 ; RUN: ld.lld --lto-new-pass-manager --plugin-opt=debug-pass-manager -o /dev/null %t.o 2>&1 | FileCheck %s
 ; RUN: ld.lld --lto-new-pass-manager --lto-debug-pass-manager -o /dev/null %t.o 2>&1 | FileCheck %s
 ; RUN: ld.lld --lto-new-pass-manager --no-lto-new-pass-manager --lto-debug-pass-manager -o /dev/null %t.o 2>&1 | FileCheck %s --check-prefix=LEGACY
+; RUN: ld.lld --plugin-opt=no-new-pass-manager --plugin-opt=debug-pass-manager -o /dev/null %t.o 2>&1 | FileCheck %s --check-prefix=LEGACY
 
 ; CHECK: Starting llvm::Module pass manager run
 ; CHECK: Finished llvm::Module pass manager run
Index: lld/ELF/Options.td
===================================================================
--- lld/ELF/Options.td
+++ lld/ELF/Options.td
@@ -598,6 +598,8 @@
 def plugin_opt_mcpu_eq: J<"plugin-opt=mcpu=">;
 def: F<"plugin-opt=new-pass-manager">,
   Alias<lto_new_pass_manager>, HelpText<"Alias for --lto-new-pass-manager">;
+def: F<"plugin-opt=no-new-pass-manager">,
+  Alias<no_lto_new_pass_manager>, HelpText<"Alias for --no-lto-new-pass-manager">;
 def: F<"plugin-opt=cs-profile-generate">,
   Alias<lto_cs_profile_generate>, HelpText<"Alias for --lto-cs-profile-generate">;
 def: J<"plugin-opt=cs-profile-path=">,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92916.310424.patch
Type: text/x-patch
Size: 2636 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201209/58d2b3c7/attachment.bin>


More information about the llvm-commits mailing list