Index: test/tools/gold/X86/new-pm.ll =================================================================== --- /dev/null +++ test/tools/gold/X86/new-pm.ll @@ -0,0 +1,19 @@ +; Test plugin options new-pass-manager and debug-pass-manager +; RUN: opt -module-summary %s -o %t.o + +; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \ +; RUN: --plugin-opt=thinlto \ +; RUN: --plugin-opt=new-pass-manager \ +; RUN: --plugin-opt=debug-pass-manager \ +; RUN: --plugin-opt=cache-dir=%t.cache \ +; RUN: -o %t2.o %t.o 2>&1 | FileCheck %s + +; CHECK: Starting llvm::Module pass manager run + +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +define void @globalfunc() #0 { +entry: + ret void +} Index: tools/gold/gold-plugin.cpp =================================================================== --- tools/gold/gold-plugin.cpp +++ tools/gold/gold-plugin.cpp @@ -197,6 +197,8 @@ static std::string sample_profile; // New pass manager static bool new_pass_manager = false; + // Debug new pass manager + static bool debug_pass_manager = false; static void process_plugin_option(const char *opt_) { @@ -258,6 +260,8 @@ sample_profile= opt.substr(strlen("sample-profile=")); } else if (opt == "new-pass-manager") { new_pass_manager = true; + } else if (opt == "debug-pass-manager") { + debug_pass_manager = true; } else { // Save this option to pass to the code generator. // ParseCommandLineOptions() expects argv[0] to be program name. Lazily @@ -853,6 +857,8 @@ // Use new pass manager if set in driver Conf.UseNewPM = options::new_pass_manager; + // Debug new pass manager if requested + Conf.DebugPassManager = options::debug_pass_manager; return llvm::make_unique(std::move(Conf), Backend, options::ParallelCodeGenParallelismLevel);