Author: Fangrui Song Date: 2020-12-09T13:31:03-08:00 New Revision: 68ff3b3376f4242307a36ac035a512ec4e256628
URL: https://github.com/llvm/llvm-project/commit/68ff3b3376f4242307a36ac035a512ec4e256628 DIFF: https://github.com/llvm/llvm-project/commit/68ff3b3376f4242307a36ac035a512ec4e256628.diff LOG: [LLD][gold] Add -plugin-opt=no-new-pass-manager -DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=on configured LLD and LLVMgold.so will 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-new-pass-manager (D92915) / -fno-experimental-new-pass-manager is set. Reviewed By: aeubanks, tejohnson Differential Revision: https://reviews.llvm.org/D92916 Added: Modified: 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 Removed: ################################################################################ diff --git a/lld/ELF/Options.td b/lld/ELF/Options.td index 0254b54eca1d8..c79578ce18fa5 100644 --- a/lld/ELF/Options.td +++ b/lld/ELF/Options.td @@ -598,6 +598,8 @@ def: J<"plugin-opt=lto-partitions=">, Alias<lto_partitions>, HelpText<"Alias for 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=">, diff --git a/lld/test/ELF/lto/new-pass-manager.ll b/lld/test/ELF/lto/new-pass-manager.ll index 941235b486307..6b6f6ce83cf00 100644 --- a/lld/test/ELF/lto/new-pass-manager.ll +++ b/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 diff --git a/llvm/test/tools/gold/X86/new-pm.ll b/llvm/test/tools/gold/X86/new-pm.ll index ee5e6ed53b135..05c7883b1403f 100644 --- a/llvm/test/tools/gold/X86/new-pm.ll +++ b/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" diff --git a/llvm/tools/gold/gold-plugin.cpp b/llvm/tools/gold/gold-plugin.cpp index adb77ca8219da..b479f8922dc6d 100644 --- a/llvm/tools/gold/gold-plugin.cpp +++ b/llvm/tools/gold/gold-plugin.cpp @@ -288,6 +288,8 @@ namespace options { 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") { _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits