[llvm] 69cf735 - [NewPM] Don't error when there's an unrecognized pass name

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 7 22:33:41 PST 2021


Author: Arthur Eubanks
Date: 2021-01-07T22:33:32-08:00
New Revision: 69cf7350628ace9de0908a51b770ecf3ee292848

URL: https://github.com/llvm/llvm-project/commit/69cf7350628ace9de0908a51b770ecf3ee292848
DIFF: https://github.com/llvm/llvm-project/commit/69cf7350628ace9de0908a51b770ecf3ee292848.diff

LOG: [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

Added: 
    

Modified: 
    llvm/include/llvm/IR/PassInstrumentation.h
    llvm/lib/IR/PassInstrumentation.cpp
    llvm/lib/Passes/PassBuilder.cpp
    llvm/test/Other/print-before-after.ll

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/IR/PassInstrumentation.h b/llvm/include/llvm/IR/PassInstrumentation.h
index 98b3fd451e4f..291f324b159a 100644
--- a/llvm/include/llvm/IR/PassInstrumentation.h
+++ b/llvm/include/llvm/IR/PassInstrumentation.h
@@ -127,8 +127,6 @@ class PassInstrumentationCallbacks {
   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 6a2defcf6b0e..56a36db21e28 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 8f6a96dcf4ad..527d19d63589 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 c0b929d70c1b..41977929f741 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


        


More information about the llvm-commits mailing list