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;
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];
#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);
- }
}
}
-; 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