18 #ifndef LLVM_CODEGEN_MACHINEPASSREGISTRY_H
19 #define LLVM_CODEGEN_MACHINEPASSREGISTRY_H
26 typedef void *(*MachinePassCtor)();
36 virtual void anchor();
56 const char *Description;
71 const char *
getName()
const {
return Name; }
121 template<
class RegistryClass>
123 public cl::parser<typename RegistryClass::FunctionPassCtor> {
132 for (RegistryClass *Node = RegistryClass::getList();
133 Node; Node = Node->getNext()) {
135 (
typename RegistryClass::FunctionPassCtor)Node->getCtor(),
136 Node->getDescription());
140 RegistryClass::setListener(
this);
void Add(MachinePassRegistryNode *Node)
const char * getDescription() const
void *(* MachinePassCtor)()
MachinePassRegistryNode * getList()
virtual ~MachinePassRegistryListener()
MachinePassRegistryNode(const char *N, const char *D, MachinePassCtor C)
void removeLiteralOption(const char *Name)
const char * getName() const
void setListener(MachinePassRegistryListener *L)
void setNext(MachinePassRegistryNode *N)
MachinePassCtor getDefault()
void initialize(cl::Option &O)
void initialize(Option &O)
MachinePassRegistryListener()
MachinePassRegistryNode * getNext() const
virtual void NotifyRemove(const char *N)=0
virtual void NotifyAdd(const char *N, MachinePassCtor C, const char *D)=0
void Remove(MachinePassRegistryNode *Node)
virtual void NotifyRemove(const char *N)
MachinePassRegistryNode ** getNextAddress()
MachinePassCtor getCtor() const
void addLiteralOption(const char *Name, const DT &V, const char *HelpStr)
virtual void NotifyAdd(const char *N, MachinePassCtor C, const char *D)
void setDefault(MachinePassCtor C)