//===- llvm/PassRegistry.h - Pass Information Registry ----------*- 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 // //===----------------------------------------------------------------------===// // // This file defines PassRegistry, a class that is used in the initialization // and registration of passes. At application startup, 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/ADT/DenseMap.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/RWMutex.h" #include <memory> #include <vector> namespace llvm { class PassInfo; struct PassRegistrationListener; /// PassRegistry - This class manages the registration and intitialization of /// the pass subsystem as application startup, and assists the PassManager /// in resolving pass dependencies. /// NOTE: PassRegistry is NOT thread-safe. If you want to use LLVM on multiple /// threads simultaneously, you will need to use a separate PassRegistry on /// each thread. class PassRegistry { … }; } // end namespace llvm #endif // LLVM_PASSREGISTRY_H