From 26d3aaeb3aac39329dd845bd0012ad961653dbc6 Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Tue, 1 Dec 2020 10:14:38 -0800 Subject: [PATCH] [LTO][NewPM] Run verifier when doing LTO This matches the legacy PM. Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D92138 --- lld/test/ELF/lto/verify-invalid.ll | 20 +++++++++++++++----- llvm/lib/LTO/LTOBackend.cpp | 14 +++++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lld/test/ELF/lto/verify-invalid.ll b/lld/test/ELF/lto/verify-invalid.ll index d44c483dbcb..c18c264ef63 100644 --- a/lld/test/ELF/lto/verify-invalid.ll +++ b/lld/test/ELF/lto/verify-invalid.ll @@ -1,11 +1,17 @@ ; REQUIRES: x86 ; RUN: llvm-as %s -o %t.o ; RUN: ld.lld %t.o -o %t2 -mllvm -debug-pass=Arguments \ -; RUN: 2>&1 | FileCheck -check-prefix=DEFAULT %s +; RUN: 2>&1 | FileCheck -check-prefix=DEFAULT-LPM %s ; RUN: ld.lld %t.o -o %t2 -mllvm -debug-pass=Arguments \ -; RUN: -disable-verify 2>&1 | FileCheck -check-prefix=DISABLE %s +; RUN: -disable-verify 2>&1 | FileCheck -check-prefix=DISABLE-LPM %s ; RUN: ld.lld %t.o -o %t2 -mllvm -debug-pass=Arguments \ -; RUN: --plugin-opt=disable-verify 2>&1 | FileCheck -check-prefix=DISABLE %s +; RUN: --plugin-opt=disable-verify 2>&1 | FileCheck -check-prefix=DISABLE-LPM %s +; RUN: ld.lld %t.o -o %t2 --lto-new-pass-manager --lto-debug-pass-manager \ +; RUN: 2>&1 | FileCheck -check-prefix=DEFAULT-NPM %s +; RUN: ld.lld %t.o -o %t2 --lto-new-pass-manager --lto-debug-pass-manager \ +; RUN: -disable-verify 2>&1 | FileCheck -check-prefix=DISABLE-NPM %s +; RUN: ld.lld %t.o -o %t2 --lto-new-pass-manager --lto-debug-pass-manager \ +; RUN: --plugin-opt=disable-verify 2>&1 | FileCheck -check-prefix=DISABLE-NPM %s target triple = "x86_64-unknown-linux-gnu" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" @@ -15,5 +21,9 @@ define void @_start() { } ; -disable-verify should disable the verification of bitcode. -; DEFAULT: Pass Arguments: {{.*}} -verify {{.*}} -verify -; DISABLE-NOT: Pass Arguments: {{.*}} -verify {{.*}} -verify +; DEFAULT-LPM: Pass Arguments: {{.*}} -verify {{.*}} -verify +; DISABLE-LPM-NOT: Pass Arguments: {{.*}} -verify {{.*}} -verify +; DEFAULT-NPM: Running pass: VerifierPass +; DEFAULT-NPM: Running pass: VerifierPass +; DEFAULT-NPM-NOT: Running pass: VerifierPass +; DISABLE-NPM-NOT: Running pass: VerifierPass diff --git a/llvm/lib/LTO/LTOBackend.cpp b/llvm/lib/LTO/LTOBackend.cpp index 3f082fdeea5..65aaa8d21bf 100644 --- a/llvm/lib/LTO/LTOBackend.cpp +++ b/llvm/lib/LTO/LTOBackend.cpp @@ -250,7 +250,9 @@ static void runNewPMPasses(const Config &Conf, Module &Mod, TargetMachine *TM, PB.crossRegisterProxies(LAM, FAM, CGAM, MAM); ModulePassManager MPM(Conf.DebugPassManager); - // FIXME (davide): verify the input. + + if (!Conf.DisableVerify) + MPM.addPass(VerifierPass()); PassBuilder::OptimizationLevel OL; @@ -272,12 +274,14 @@ static void runNewPMPasses(const Config &Conf, Module &Mod, TargetMachine *TM, } if (IsThinLTO) - MPM = PB.buildThinLTODefaultPipeline(OL, ImportSummary); + MPM.addPass(PB.buildThinLTODefaultPipeline(OL, ImportSummary)); else - MPM = PB.buildLTODefaultPipeline(OL, ExportSummary); - MPM.run(Mod, MAM); + MPM.addPass(PB.buildLTODefaultPipeline(OL, ExportSummary)); - // FIXME (davide): verify the output. + if (!Conf.DisableVerify) + MPM.addPass(VerifierPass()); + + MPM.run(Mod, MAM); } static void runNewPMCustomPasses(const Config &Conf, Module &Mod, -- 2.11.0