From d15d2f508748008bfb2d9521b4724a0f80d1169c Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Tue, 20 Jul 2010 18:53:25 +0000 Subject: [PATCH] Oops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108885 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/PassRegistry.h | 67 +++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 include/llvm/PassRegistry.h diff --git a/include/llvm/PassRegistry.h b/include/llvm/PassRegistry.h new file mode 100644 index 00000000000..1f627d8bfca --- /dev/null +++ b/include/llvm/PassRegistry.h @@ -0,0 +1,67 @@ +//===- llvm/PassRegistry.h - Pass Information Registry ----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines PassRegistry, a class that is used in the initialization +// and registration of passes. At initialization, passes are registered with +// the PassRegistry, which is later provided to the PassManager for dependency +// resolution and similar tasks. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_PASSREGISTRY_H +#define LLVM_PASSREGISTRY_H + +#include "llvm/PassSupport.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/System/DataTypes.h" +#include "llvm/System/Mutex.h" +#include +#include + +using namespace llvm; + +namespace llvm { + +class PassRegistry { + /// Guards the contents of this class. + mutable sys::SmartMutex Lock; + + /// PassInfoMap - Keep track of the PassInfo object for each registered pass. + typedef std::map MapType; + MapType PassInfoMap; + + typedef StringMap StringMapType; + StringMapType PassInfoStringMap; + + /// AnalysisGroupInfo - Keep track of information for each analysis group. + struct AnalysisGroupInfo { + std::set Implementations; + }; + std::map AnalysisGroupInfoMap; + +public: + static PassRegistry *getPassRegistry(); + + const PassInfo *getPassInfo(intptr_t TI) const; + const PassInfo *getPassInfo(StringRef Arg) const; + + void registerPass(const PassInfo &PI); + void unregisterPass(const PassInfo &PI); + + /// Analysis Group Mechanisms. + void registerAnalysisGroup(PassInfo *InterfaceInfo, + const PassInfo *ImplementationInfo, + bool isDefault); + + void enumerateWith(PassRegistrationListener *L); +}; + +} + +#endif -- 2.34.1