From: Teresa Johnson Date: Wed, 16 Sep 2015 18:06:45 +0000 (+0000) Subject: Disable the second verification run when performing LTO through X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=15c79f6c94dfa988f94f2de5a2fb314a83ec5c39;p=oota-llvm.git Disable the second verification run when performing LTO through gold in NDEBUG mode. Follow on patch for r247729 - LTO: Disable extra verify runs in release builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247824 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/gold/X86/disable-verify.ll b/test/tools/gold/X86/disable-verify.ll new file mode 100644 index 00000000000..b5518868664 --- /dev/null +++ b/test/tools/gold/X86/disable-verify.ll @@ -0,0 +1,25 @@ +; RUN: llvm-as %s -o %t.o +; REQUIRES: asserts + +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=disable-verify \ +; RUN: --plugin-opt=-debug-pass=Arguments \ +; RUN: -shared %t.o -o %t2.o 2>&1 | FileCheck %s + +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=-debug-pass=Arguments \ +; RUN: -shared %t.o -o %t2.o 2>&1 | FileCheck %s -check-prefix=VERIFY + +target triple = "x86_64-unknown-linux-gnu" + +; -disable-verify should disable output verification from the optimization +; pipeline. +; CHECK: Pass Arguments: {{.*}} -verify -ipsccp +; CHECK-NOT: -verify + +; VERIFY: Pass Arguments: {{.*}} -verify {{.*}} -verify + +define void @f() { +entry: + ret void +} diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp index a917ecfa502..14c42671b0d 100644 --- a/tools/gold/gold-plugin.cpp +++ b/tools/gold/gold-plugin.cpp @@ -94,6 +94,11 @@ namespace options { static OutputType TheOutputType = OT_NORMAL; static unsigned OptLevel = 2; static unsigned Parallelism = 1; +#ifdef NDEBUG + static bool DisableVerify = true; +#else + static bool DisableVerify = false; +#endif static std::string obj_path; static std::string extra_library_path; static std::string triple; @@ -134,6 +139,8 @@ namespace options { } else if (opt.startswith("jobs=")) { if (StringRef(opt_ + 5).getAsInteger(10, Parallelism)) message(LDPL_FATAL, "Invalid parallelism level: %s", opt_ + 5); + } else if (opt == "disable-verify") { + DisableVerify = true; } else { // Save this option to pass to the code generator. // ParseCommandLineOptions() expects argv[0] to be program name. Lazily @@ -730,8 +737,10 @@ static void runLTOPasses(Module &M, TargetMachine &TM) { PassManagerBuilder PMB; PMB.LibraryInfo = new TargetLibraryInfoImpl(Triple(TM.getTargetTriple())); PMB.Inliner = createFunctionInliningPass(); + // Unconditionally verify input since it is not verified before this + // point and has unknown origin. PMB.VerifyInput = true; - PMB.VerifyOutput = true; + PMB.VerifyOutput = !options::DisableVerify; PMB.LoopVectorize = true; PMB.SLPVectorize = true; PMB.OptLevel = options::OptLevel;