From 69cf7350628ace9de0908a51b770ecf3ee292848 Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Thu, 7 Jan 2021 20:20:46 -0800 Subject: [PATCH] [NewPM] Don't error when there's an unrecognized pass name This currently blocks --print-before/after with a legacy PM pass, for example when we use the new PM for the optimization pipeline but the legacy PM for the codegen pipeline. Also in the future when the codegen pipeline works with the new PM there will be multiple places to specify passes, so even when everything is using the new PM, there will still be multiple places that can accept different pass names. Reviewed By: hoy, ychen Differential Revision: https://reviews.llvm.org/D94283 --- llvm/include/llvm/IR/PassInstrumentation.h | 2 -- llvm/lib/IR/PassInstrumentation.cpp | 8 -------- llvm/lib/Passes/PassBuilder.cpp | 8 -------- llvm/test/Other/print-before-after.ll | 4 ++-- 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/llvm/include/llvm/IR/PassInstrumentation.h b/llvm/include/llvm/IR/PassInstrumentation.h index 98b3fd4..291f324 100644 --- a/llvm/include/llvm/IR/PassInstrumentation.h +++ b/llvm/include/llvm/IR/PassInstrumentation.h @@ -127,8 +127,6 @@ public: void addClassToPassName(StringRef ClassName, StringRef PassName); /// Get the pass name for a given pass class name. StringRef getPassNameForClassName(StringRef ClassName); - /// Whether or not the class to pass name map contains the pass name. - bool hasPassName(StringRef PassName); private: friend class PassInstrumentation; diff --git a/llvm/lib/IR/PassInstrumentation.cpp b/llvm/lib/IR/PassInstrumentation.cpp index 6a2defc..56a36db 100644 --- a/llvm/lib/IR/PassInstrumentation.cpp +++ b/llvm/lib/IR/PassInstrumentation.cpp @@ -22,14 +22,6 @@ void PassInstrumentationCallbacks::addClassToPassName(StringRef ClassName, ClassToPassName[ClassName] = PassName.str(); } -bool PassInstrumentationCallbacks::hasPassName(StringRef PassName) { - for (const auto &E : ClassToPassName) { - if (E.getValue() == PassName) - return true; - } - return false; -} - StringRef PassInstrumentationCallbacks::getPassNameForClassName(StringRef ClassName) { return ClassToPassName[ClassName]; diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 8f6a96d..527d19d 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -459,14 +459,6 @@ PassBuilder::PassBuilder(bool DebugLogging, TargetMachine *TM, #define CGSCC_ANALYSIS(NAME, CREATE_PASS) \ PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); #include "PassRegistry.def" - for (const auto &P : printBeforePasses()) { - if (!PIC->hasPassName(P)) - report_fatal_error("unrecognized pass name: " + P); - } - for (const auto &P : printAfterPasses()) { - if (!PIC->hasPassName(P)) - report_fatal_error("unrecognized pass name: " + P); - } } } diff --git a/llvm/test/Other/print-before-after.ll b/llvm/test/Other/print-before-after.ll index c0b929d7..4197792 100644 --- a/llvm/test/Other/print-before-after.ll +++ b/llvm/test/Other/print-before-after.ll @@ -1,5 +1,5 @@ -; RUN: not --crash opt < %s -disable-output -passes='no-op-module' -print-before=bleh 2>&1 | FileCheck %s --check-prefix=NONE --allow-empty -; RUN: not --crash opt < %s -disable-output -passes='no-op-module' -print-after=bleh 2>&1 | FileCheck %s --check-prefix=NONE --allow-empty +; RUN: opt < %s -disable-output -passes='no-op-module' -print-before=bleh 2>&1 | FileCheck %s --check-prefix=NONE --allow-empty +; RUN: opt < %s -disable-output -passes='no-op-module' -print-after=bleh 2>&1 | FileCheck %s --check-prefix=NONE --allow-empty ; RUN: opt < %s -disable-output -passes='no-op-module' -print-before=no-op-function 2>&1 | FileCheck %s --check-prefix=NONE --allow-empty ; RUN: opt < %s -disable-output -passes='no-op-module' -print-after=no-op-function 2>&1 | FileCheck %s --check-prefix=NONE --allow-empty ; RUN: opt < %s -disable-output -passes='no-op-module,no-op-function' -print-before=no-op-module 2>&1 | FileCheck %s --check-prefix=ONCE -- 2.7.4