//===- PassInstrumentation.cpp - Pass Instrumentation interface -*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// \file /// /// This file provides the implementation of PassInstrumentation class. /// //===----------------------------------------------------------------------===// #include "llvm/IR/PassInstrumentation.h" #include "llvm/ADT/STLExtras.h" #include "llvm/IR/PassManager.h" namespace llvm { void PassInstrumentationCallbacks::addClassToPassName(StringRef ClassName, StringRef PassName) { if (ClassToPassName[ClassName].empty()) ClassToPassName[ClassName] = PassName.str(); } StringRef PassInstrumentationCallbacks::getPassNameForClassName(StringRef ClassName) { return ClassToPassName[ClassName]; } AnalysisKey PassInstrumentationAnalysis::Key; bool isSpecialPass(StringRef PassID, const std::vector &Specials) { size_t Pos = PassID.find('<'); StringRef Prefix = PassID; if (Pos != StringRef::npos) Prefix = PassID.substr(0, Pos); return any_of(Specials, [Prefix](StringRef S) { return Prefix.endswith(S); }); } } // namespace llvm