mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-13 10:32:06 +00:00
[cleanup] Fix up trailing whitespace and formatting in the pass regitsry
code prior to hacking on it more significantly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219094 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
eb2be34094
commit
b3d7f9c18d
@ -42,61 +42,61 @@ class PassRegistry {
|
||||
mutable sys::SmartRWMutex<true> Lock;
|
||||
|
||||
/// PassInfoMap - Keep track of the PassInfo object for each registered pass.
|
||||
typedef DenseMap<const void*, const PassInfo*> MapType;
|
||||
typedef DenseMap<const void *, const PassInfo *> MapType;
|
||||
MapType PassInfoMap;
|
||||
|
||||
typedef StringMap<const PassInfo*> StringMapType;
|
||||
|
||||
typedef StringMap<const PassInfo *> StringMapType;
|
||||
StringMapType PassInfoStringMap;
|
||||
|
||||
|
||||
/// AnalysisGroupInfo - Keep track of information for each analysis group.
|
||||
struct AnalysisGroupInfo {
|
||||
SmallPtrSet<const PassInfo *, 8> Implementations;
|
||||
};
|
||||
DenseMap<const PassInfo*, AnalysisGroupInfo> AnalysisGroupInfoMap;
|
||||
|
||||
DenseMap<const PassInfo *, AnalysisGroupInfo> AnalysisGroupInfoMap;
|
||||
|
||||
std::vector<std::unique_ptr<const PassInfo>> ToFree;
|
||||
std::vector<PassRegistrationListener*> Listeners;
|
||||
|
||||
std::vector<PassRegistrationListener *> Listeners;
|
||||
|
||||
public:
|
||||
PassRegistry() { }
|
||||
PassRegistry() {}
|
||||
~PassRegistry();
|
||||
|
||||
/// getPassRegistry - Access the global registry object, which is
|
||||
|
||||
/// getPassRegistry - Access the global registry object, which is
|
||||
/// automatically initialized at application launch and destroyed by
|
||||
/// llvm_shutdown.
|
||||
static PassRegistry *getPassRegistry();
|
||||
|
||||
|
||||
/// getPassInfo - Look up a pass' corresponding PassInfo, indexed by the pass'
|
||||
/// type identifier (&MyPass::ID).
|
||||
const PassInfo *getPassInfo(const void *TI) const;
|
||||
|
||||
|
||||
/// getPassInfo - Look up a pass' corresponding PassInfo, indexed by the pass'
|
||||
/// argument string.
|
||||
const PassInfo *getPassInfo(StringRef Arg) const;
|
||||
|
||||
/// registerPass - Register a pass (by means of its PassInfo) with the
|
||||
|
||||
/// registerPass - Register a pass (by means of its PassInfo) with the
|
||||
/// registry. Required in order to use the pass with a PassManager.
|
||||
void registerPass(const PassInfo &PI, bool ShouldFree = false);
|
||||
|
||||
/// registerPass - Unregister a pass (by means of its PassInfo) with the
|
||||
|
||||
/// registerPass - Unregister a pass (by means of its PassInfo) with the
|
||||
/// registry.
|
||||
void unregisterPass(const PassInfo &PI);
|
||||
|
||||
|
||||
/// registerAnalysisGroup - Register an analysis group (or a pass implementing
|
||||
// an analysis group) with the registry. Like registerPass, this is required
|
||||
// an analysis group) with the registry. Like registerPass, this is required
|
||||
// in order for a PassManager to be able to use this group/pass.
|
||||
void registerAnalysisGroup(const void *InterfaceID, const void *PassID,
|
||||
PassInfo& Registeree, bool isDefault,
|
||||
PassInfo &Registeree, bool isDefault,
|
||||
bool ShouldFree = false);
|
||||
|
||||
|
||||
/// enumerateWith - Enumerate the registered passes, calling the provided
|
||||
/// PassRegistrationListener's passEnumerate() callback on each of them.
|
||||
void enumerateWith(PassRegistrationListener *L);
|
||||
|
||||
|
||||
/// addRegistrationListener - Register the given PassRegistrationListener
|
||||
/// to receive passRegistered() callbacks whenever a new pass is registered.
|
||||
void addRegistrationListener(PassRegistrationListener *L);
|
||||
|
||||
|
||||
/// removeRegistrationListener - Unregister a PassRegistrationListener so that
|
||||
/// it no longer receives passRegistered() callbacks.
|
||||
void removeRegistrationListener(PassRegistrationListener *L);
|
||||
|
@ -36,8 +36,7 @@ PassRegistry *PassRegistry::getPassRegistry() {
|
||||
// Accessors
|
||||
//
|
||||
|
||||
PassRegistry::~PassRegistry() {
|
||||
}
|
||||
PassRegistry::~PassRegistry() {}
|
||||
|
||||
const PassInfo *PassRegistry::getPassInfo(const void *TI) const {
|
||||
sys::SmartScopedReader<true> Guard(Lock);
|
||||
@ -58,24 +57,26 @@ const PassInfo *PassRegistry::getPassInfo(StringRef Arg) const {
|
||||
void PassRegistry::registerPass(const PassInfo &PI, bool ShouldFree) {
|
||||
sys::SmartScopedWriter<true> Guard(Lock);
|
||||
bool Inserted =
|
||||
PassInfoMap.insert(std::make_pair(PI.getTypeInfo(),&PI)).second;
|
||||
PassInfoMap.insert(std::make_pair(PI.getTypeInfo(), &PI)).second;
|
||||
assert(Inserted && "Pass registered multiple times!");
|
||||
(void)Inserted;
|
||||
PassInfoStringMap[PI.getPassArgument()] = &PI;
|
||||
|
||||
|
||||
// Notify any listeners.
|
||||
for (std::vector<PassRegistrationListener*>::iterator
|
||||
I = Listeners.begin(), E = Listeners.end(); I != E; ++I)
|
||||
for (std::vector<PassRegistrationListener *>::iterator I = Listeners.begin(),
|
||||
E = Listeners.end();
|
||||
I != E; ++I)
|
||||
(*I)->passRegistered(&PI);
|
||||
|
||||
if (ShouldFree) ToFree.push_back(std::unique_ptr<const PassInfo>(&PI));
|
||||
|
||||
if (ShouldFree)
|
||||
ToFree.push_back(std::unique_ptr<const PassInfo>(&PI));
|
||||
}
|
||||
|
||||
void PassRegistry::unregisterPass(const PassInfo &PI) {
|
||||
sys::SmartScopedWriter<true> Guard(Lock);
|
||||
MapType::iterator I = PassInfoMap.find(PI.getTypeInfo());
|
||||
assert(I != PassInfoMap.end() && "Pass registered but not in map!");
|
||||
|
||||
|
||||
// Remove pass from the map.
|
||||
PassInfoMap.erase(I);
|
||||
PassInfoStringMap.erase(PI.getPassArgument());
|
||||
@ -87,29 +88,27 @@ void PassRegistry::enumerateWith(PassRegistrationListener *L) {
|
||||
L->passEnumerate(I->second);
|
||||
}
|
||||
|
||||
|
||||
/// Analysis Group Mechanisms.
|
||||
void PassRegistry::registerAnalysisGroup(const void *InterfaceID,
|
||||
void PassRegistry::registerAnalysisGroup(const void *InterfaceID,
|
||||
const void *PassID,
|
||||
PassInfo& Registeree,
|
||||
bool isDefault,
|
||||
PassInfo &Registeree, bool isDefault,
|
||||
bool ShouldFree) {
|
||||
PassInfo *InterfaceInfo = const_cast<PassInfo*>(getPassInfo(InterfaceID));
|
||||
PassInfo *InterfaceInfo = const_cast<PassInfo *>(getPassInfo(InterfaceID));
|
||||
if (!InterfaceInfo) {
|
||||
// First reference to Interface, register it now.
|
||||
registerPass(Registeree);
|
||||
InterfaceInfo = &Registeree;
|
||||
}
|
||||
assert(Registeree.isAnalysisGroup() &&
|
||||
assert(Registeree.isAnalysisGroup() &&
|
||||
"Trying to join an analysis group that is a normal pass!");
|
||||
|
||||
if (PassID) {
|
||||
PassInfo *ImplementationInfo = const_cast<PassInfo*>(getPassInfo(PassID));
|
||||
PassInfo *ImplementationInfo = const_cast<PassInfo *>(getPassInfo(PassID));
|
||||
assert(ImplementationInfo &&
|
||||
"Must register pass before adding to AnalysisGroup!");
|
||||
|
||||
sys::SmartScopedWriter<true> Guard(Lock);
|
||||
|
||||
|
||||
// Make sure we keep track of the fact that the implementation implements
|
||||
// the interface.
|
||||
ImplementationInfo->addInterfaceImplemented(InterfaceInfo);
|
||||
@ -121,14 +120,15 @@ void PassRegistry::registerAnalysisGroup(const void *InterfaceID,
|
||||
if (isDefault) {
|
||||
assert(InterfaceInfo->getNormalCtor() == nullptr &&
|
||||
"Default implementation for analysis group already specified!");
|
||||
assert(ImplementationInfo->getNormalCtor() &&
|
||||
"Cannot specify pass as default if it does not have a default ctor");
|
||||
assert(
|
||||
ImplementationInfo->getNormalCtor() &&
|
||||
"Cannot specify pass as default if it does not have a default ctor");
|
||||
InterfaceInfo->setNormalCtor(ImplementationInfo->getNormalCtor());
|
||||
InterfaceInfo->setTargetMachineCtor(
|
||||
ImplementationInfo->getTargetMachineCtor());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ShouldFree)
|
||||
ToFree.push_back(std::unique_ptr<const PassInfo>(&Registeree));
|
||||
}
|
||||
@ -140,7 +140,7 @@ void PassRegistry::addRegistrationListener(PassRegistrationListener *L) {
|
||||
|
||||
void PassRegistry::removeRegistrationListener(PassRegistrationListener *L) {
|
||||
sys::SmartScopedWriter<true> Guard(Lock);
|
||||
|
||||
|
||||
auto I = std::find(Listeners.begin(), Listeners.end(), L);
|
||||
Listeners.erase(I);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user