#ifndef LLVM_PASSREGISTRY_H
#define LLVM_PASSREGISTRY_H
-#include "llvm-c/Core.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/PassInfo.h"
#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/RWMutex.h"
-#include <atomic>
#include <vector>
namespace llvm {
class PassRegistry {
mutable sys::SmartRWMutex<true> Lock;
- /// Only if false, synchronization must use the Lock mutex.
- std::atomic<bool> locked;
-
/// PassInfoMap - Keep track of the PassInfo object for each registered pass.
typedef DenseMap<const void *, const PassInfo *> MapType;
MapType PassInfoMap;
std::vector<PassRegistrationListener *> Listeners;
public:
- PassRegistry() : locked(false) {}
+ PassRegistry() {}
~PassRegistry();
/// getPassRegistry - Access the global registry object, which is
/// llvm_shutdown.
static PassRegistry *getPassRegistry();
- /// Enables fast thread synchronization in getPassInfo().
- /// After calling lock() no more passes may be registered.
- void lock() { locked = true; }
-
/// getPassInfo - Look up a pass' corresponding PassInfo, indexed by the pass'
/// type identifier (&MyPass::ID).
const PassInfo *getPassInfo(const void *TI) const;