[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
This commit is contained in:
Arthur Eubanks 2021-01-07 20:20:46 -08:00
parent 0ebc1fb29f
commit 69cf735062
4 changed files with 2 additions and 20 deletions

View File

@ -127,8 +127,6 @@ public:
void addClassToPassName(StringRef ClassName, StringRef PassName); void addClassToPassName(StringRef ClassName, StringRef PassName);
/// Get the pass name for a given pass class name. /// Get the pass name for a given pass class name.
StringRef getPassNameForClassName(StringRef ClassName); StringRef getPassNameForClassName(StringRef ClassName);
/// Whether or not the class to pass name map contains the pass name.
bool hasPassName(StringRef PassName);
private: private:
friend class PassInstrumentation; friend class PassInstrumentation;

View File

@ -22,14 +22,6 @@ void PassInstrumentationCallbacks::addClassToPassName(StringRef ClassName,
ClassToPassName[ClassName] = PassName.str(); ClassToPassName[ClassName] = PassName.str();
} }
bool PassInstrumentationCallbacks::hasPassName(StringRef PassName) {
for (const auto &E : ClassToPassName) {
if (E.getValue() == PassName)
return true;
}
return false;
}
StringRef StringRef
PassInstrumentationCallbacks::getPassNameForClassName(StringRef ClassName) { PassInstrumentationCallbacks::getPassNameForClassName(StringRef ClassName) {
return ClassToPassName[ClassName]; return ClassToPassName[ClassName];

View File

@ -459,14 +459,6 @@ PassBuilder::PassBuilder(bool DebugLogging, TargetMachine *TM,
#define CGSCC_ANALYSIS(NAME, CREATE_PASS) \ #define CGSCC_ANALYSIS(NAME, CREATE_PASS) \
PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
#include "PassRegistry.def" #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);
}
} }
} }

View File

@ -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: 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-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-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' -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 ; RUN: opt < %s -disable-output -passes='no-op-module,no-op-function' -print-before=no-op-module 2>&1 | FileCheck %s --check-prefix=ONCE