18 #ifndef LLVM_CODEGEN_MACHINEPASSREGISTRY_H
19 #define LLVM_CODEGEN_MACHINEPASSREGISTRY_H
26 typedef void *(*MachinePassCtor)();
36 virtual void anchor();
121 template<
class RegistryClass>
123 public cl::parser<typename RegistryClass::FunctionPassCtor> {
126 : cl::
parser<typename RegistryClass::FunctionPassCtor>(O) {}
133 for (RegistryClass *Node = RegistryClass::getList();
134 Node; Node = Node->getNext()) {
136 (
typename RegistryClass::FunctionPassCtor)Node->getCtor(),
137 Node->getDescription());
141 RegistryClass::setListener(
this);
~RegisterPassParser() override
void Add(MachinePassRegistryNode *Node)
Add - Adds a function pass to the registration list.
void *(* MachinePassCtor)()
MachinePassRegistryNode * getList()
RegisterPassParser class - Handle the addition of new machine passes.
virtual ~MachinePassRegistryListener()
MachinePassRegistryNode(const char *N, const char *D, MachinePassCtor C)
static GCRegistry::Add< StatepointGC > D("statepoint-example","an example strategy for statepoint")
void setListener(MachinePassRegistryListener *L)
void NotifyRemove(StringRef N) override
RegisterPassParser(cl::Option &O)
void setNext(MachinePassRegistryNode *N)
MachinePassCtor getDefault()
MachinePassRegistry - Track the registration of machine passes.
MachinePassRegistryListener()
MachinePassRegistryNode * getNext() const
void Remove(MachinePassRegistryNode *Node)
Remove - Removes a function pass from the registration list.
void removeLiteralOption(StringRef Name)
removeLiteralOption - Remove the specified option.
void NotifyAdd(StringRef N, MachinePassCtor C, StringRef D) override
StringRef getDescription() const
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
MachinePassRegistryListener - Listener to adds and removals of nodes in registration list...
virtual void NotifyAdd(StringRef N, MachinePassCtor C, StringRef D)=0
StringRef getName() const
void addLiteralOption(StringRef Name, const DT &V, StringRef HelpStr)
addLiteralOption - Add an entry to the mapping table.
MachinePassRegistryNode ** getNextAddress()
MachinePassCtor getCtor() const
virtual void NotifyRemove(StringRef N)=0
MachinePassRegistryNode - Machine pass node stored in registration list.
StringRef - Represent a constant reference to a string, i.e.
void setDefault(MachinePassCtor C)