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()) {

119 if (*I == Node) {

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.