Commit 68ff3b33 authored by Fangrui Song's avatar Fangrui Song
Browse files

[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
parent a5c89bb0
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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=">,
+1 −0
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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"

+2 −0
Original line number Diff line number Diff line
@@ -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") {