LLVM: include/llvm/CodeGen/MachinePassRegistry.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#ifndef LLVM_CODEGEN_MACHINEPASSREGISTRY_H
18#define LLVM_CODEGEN_MACHINEPASSREGISTRY_H
19
23
24namespace llvm {
25
26
27
28
29
30
31
33 virtual void anchor() {}
34
35public:
38
41};
42
43
44
45
46
47
49private:
51 StringRef Name;
52 StringRef Description;
53 PassCtorTy Ctor;
54
55public:
57 : Name(N), Description(D), Ctor(C) {}
58
59
64 PassCtorTy getCtor() const { return Ctor; }
66};
67
68
69
70
71
72
74private:
76 PassCtorTy Default;
78 *Listener;
79
80public:
81
82
83
84
85
89
91 PassCtorTy Ctor = nullptr;
93 R = R->getNext()) {
94 if (R->getName() == Name) {
95 Ctor = R->getCtor();
96 break;
97 }
98 }
99 assert(Ctor && "Unregistered pass name");
101 }
103
104
105
107 Node->setNext(List);
109 if (Listener)
110 Listener->NotifyAdd(Node->getName(), Node->getCtor(),
111 Node->getDescription());
112 }
113
114
115
118 I = (*I)->getNextAddress()) {
120 if (Listener)
121 Listener->NotifyRemove(Node->getName());
122 *I = (*I)->getNext();
123 break;
124 }
125 }
126 }
127};
128
129
130
131
132
133
134template
137 typename RegistryClass::FunctionPassCtor>,
138 public cl::parser {
139public:
143
146
147
148 for (RegistryClass *Node = RegistryClass::getList();
151 (typename RegistryClass::FunctionPassCtor)Node->getCtor(),
152 Node->getDescription());
153 }
154
155
156 RegistryClass::setListener(this);
157 }
158
159
167};
168
169}
170
171#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
MachinePassRegistryListener - Listener to adds and removals of nodes in registration list.
Definition MachinePassRegistry.h:32
MachinePassRegistryListener()=default
virtual ~MachinePassRegistryListener()=default
virtual void NotifyRemove(StringRef N)=0
virtual void NotifyAdd(StringRef N, PassCtorTy C, StringRef D)=0
MachinePassRegistryNode - Machine pass node stored in registration list.
Definition MachinePassRegistry.h:48
StringRef getDescription() const
Definition MachinePassRegistry.h:63
PassCtorTy getCtor() const
Definition MachinePassRegistry.h:64
void setNext(MachinePassRegistryNode *N)
Definition MachinePassRegistry.h:65
StringRef getName() const
Definition MachinePassRegistry.h:62
MachinePassRegistryNode(const char *N, const char *D, PassCtorTy C)
Definition MachinePassRegistry.h:56
MachinePassRegistryNode * getNext() const
Definition MachinePassRegistry.h:60
MachinePassRegistryNode ** getNextAddress()
Definition MachinePassRegistry.h:61
MachinePassRegistry - Track the registration of machine passes.
Definition MachinePassRegistry.h:73
PassCtorTy getDefault()
Definition MachinePassRegistry.h:87
void Remove(MachinePassRegistryNode< PassCtorTy > *Node)
Remove - Removes a function pass from the registration list.
Definition MachinePassRegistry.h:116
void setListener(MachinePassRegistryListener< PassCtorTy > *L)
Definition MachinePassRegistry.h:102
void Add(MachinePassRegistryNode< PassCtorTy > *Node)
Add - Adds a function pass to the registration list.
Definition MachinePassRegistry.h:106
MachinePassRegistryNode< PassCtorTy > * getList()
Definition MachinePassRegistry.h:86
void setDefault(PassCtorTy C)
Definition MachinePassRegistry.h:88
void setDefault(StringRef Name)
setDefault - Set the default constructor by name.
Definition MachinePassRegistry.h:90
void NotifyRemove(StringRef N) override
Definition MachinePassRegistry.h:164
void initialize()
Definition MachinePassRegistry.h:144
RegisterPassParser(cl::Option &O)
Definition MachinePassRegistry.h:140
~RegisterPassParser() override
Definition MachinePassRegistry.h:142
void NotifyAdd(StringRef N, typename RegistryClass::FunctionPassCtor C, StringRef D) override
Definition MachinePassRegistry.h:160
StringRef - Represent a constant reference to a string, i.e.
void removeLiteralOption(StringRef Name)
void addLiteralOption(StringRef Name, const DT &V, StringRef HelpStr)
@ C
The default llvm calling convention, compatible with C.
This namespace contains all of the command line option processing machinery.
This is an optimization pass for GlobalISel generic memory operations.