diff --git a/llvm/include/llvm/IR/PassInstrumentation.h b/llvm/include/llvm/IR/PassInstrumentation.h index 031571599f9ad..33eda5a4222f1 100644 --- a/llvm/include/llvm/IR/PassInstrumentation.h +++ b/llvm/include/llvm/IR/PassInstrumentation.h @@ -164,7 +164,7 @@ class PassInstrumentationCallbacks { /// Add a class name to pass name mapping for use by pass instrumentation. LLVM_ABI 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. Empty if no match found. LLVM_ABI StringRef getPassNameForClassName(StringRef ClassName); private: diff --git a/llvm/lib/IR/PassInstrumentation.cpp b/llvm/lib/IR/PassInstrumentation.cpp index 94ad124a6c770..70bbe8f6234b1 100644 --- a/llvm/lib/IR/PassInstrumentation.cpp +++ b/llvm/lib/IR/PassInstrumentation.cpp @@ -23,6 +23,7 @@ template struct LLVM_EXPORT_TEMPLATE Any::TypeId; void PassInstrumentationCallbacks::addClassToPassName(StringRef ClassName, StringRef PassName) { + assert(!PassName.empty() && "PassName can't be empty!"); ClassToPassName.try_emplace(ClassName, PassName.str()); } @@ -33,7 +34,10 @@ PassInstrumentationCallbacks::getPassNameForClassName(StringRef ClassName) { Fn(); ClassToPassNameCallbacks.clear(); } - return ClassToPassName[ClassName]; + auto PassNameIter = ClassToPassName.find(ClassName); + if (PassNameIter != ClassToPassName.end()) + return PassNameIter->second; + return {}; } AnalysisKey PassInstrumentationAnalysis::Key;