1 | //===- llvm/IR/Metadata.def - Metadata definitions --------------*- C++ -*-===// |
---|---|
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // Macros for running through all types of metadata. |
10 | // |
11 | //===----------------------------------------------------------------------===// |
12 | |
13 | #if !(defined HANDLE_METADATA || defined HANDLE_METADATA_LEAF || \ |
14 | defined HANDLE_METADATA_BRANCH || defined HANDLE_MDNODE_LEAF || \ |
15 | defined HANDLE_MDNODE_LEAF_UNIQUABLE || defined HANDLE_MDNODE_BRANCH || \ |
16 | defined HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE || \ |
17 | defined HANDLE_SPECIALIZED_MDNODE_LEAF || \ |
18 | defined HANDLE_SPECIALIZED_MDNODE_BRANCH) |
19 | #error "Missing macro definition of HANDLE_METADATA*" |
20 | #endif |
21 | |
22 | // Handler for all types of metadata. |
23 | #ifndef HANDLE_METADATA |
24 | #define HANDLE_METADATA(CLASS) |
25 | #endif |
26 | |
27 | // Handler for leaf nodes in the class hierarchy. |
28 | #ifndef HANDLE_METADATA_LEAF |
29 | #define HANDLE_METADATA_LEAF(CLASS) HANDLE_METADATA(CLASS) |
30 | #endif |
31 | |
32 | // Handler for non-leaf nodes in the class hierarchy. |
33 | #ifndef HANDLE_METADATA_BRANCH |
34 | #define HANDLE_METADATA_BRANCH(CLASS) HANDLE_METADATA(CLASS) |
35 | #endif |
36 | |
37 | // Handler for specialized and uniquable leaf nodes under MDNode. Defers to |
38 | // HANDLE_MDNODE_LEAF_UNIQUABLE if it's defined, otherwise to |
39 | // HANDLE_SPECIALIZED_MDNODE_LEAF. |
40 | #ifndef HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE |
41 | #ifdef HANDLE_MDNODE_LEAF_UNIQUABLE |
42 | #define HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(CLASS) \ |
43 | HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) |
44 | #else |
45 | #define HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(CLASS) \ |
46 | HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) |
47 | #endif |
48 | #endif |
49 | |
50 | // Handler for leaf nodes under MDNode. |
51 | #ifndef HANDLE_MDNODE_LEAF_UNIQUABLE |
52 | #define HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) HANDLE_MDNODE_LEAF(CLASS) |
53 | #endif |
54 | |
55 | // Handler for leaf nodes under MDNode. |
56 | #ifndef HANDLE_MDNODE_LEAF |
57 | #define HANDLE_MDNODE_LEAF(CLASS) HANDLE_METADATA_LEAF(CLASS) |
58 | #endif |
59 | |
60 | // Handler for non-leaf nodes under MDNode. |
61 | #ifndef HANDLE_MDNODE_BRANCH |
62 | #define HANDLE_MDNODE_BRANCH(CLASS) HANDLE_METADATA_BRANCH(CLASS) |
63 | #endif |
64 | |
65 | // Handler for specialized leaf nodes under MDNode. |
66 | #ifndef HANDLE_SPECIALIZED_MDNODE_LEAF |
67 | #define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) HANDLE_MDNODE_LEAF(CLASS) |
68 | #endif |
69 | |
70 | // Handler for specialized non-leaf nodes under MDNode. |
71 | #ifndef HANDLE_SPECIALIZED_MDNODE_BRANCH |
72 | #define HANDLE_SPECIALIZED_MDNODE_BRANCH(CLASS) HANDLE_MDNODE_BRANCH(CLASS) |
73 | #endif |
74 | |
75 | HANDLE_METADATA_LEAF(MDString) |
76 | HANDLE_METADATA_BRANCH(ValueAsMetadata) |
77 | HANDLE_METADATA_LEAF(ConstantAsMetadata) |
78 | HANDLE_METADATA_LEAF(LocalAsMetadata) |
79 | HANDLE_METADATA_LEAF(DistinctMDOperandPlaceholder) |
80 | HANDLE_METADATA_LEAF(DIArgList) |
81 | HANDLE_MDNODE_BRANCH(MDNode) |
82 | HANDLE_MDNODE_LEAF_UNIQUABLE(MDTuple) |
83 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocation) |
84 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIExpression) |
85 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariableExpression) |
86 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DINode) |
87 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(GenericDINode) |
88 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubrange) |
89 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIEnumerator) |
90 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DIScope) |
91 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DIType) |
92 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIBasicType) |
93 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIDerivedType) |
94 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DICompositeType) |
95 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubroutineType) |
96 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIFile) |
97 | HANDLE_SPECIALIZED_MDNODE_LEAF(DICompileUnit) |
98 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DILocalScope) |
99 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubprogram) |
100 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DILexicalBlockBase) |
101 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILexicalBlock) |
102 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILexicalBlockFile) |
103 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DINamespace) |
104 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIModule) |
105 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DITemplateParameter) |
106 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DITemplateTypeParameter) |
107 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DITemplateValueParameter) |
108 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DIVariable) |
109 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariable) |
110 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocalVariable) |
111 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILabel) |
112 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIObjCProperty) |
113 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIImportedEntity) |
114 | HANDLE_SPECIALIZED_MDNODE_LEAF(DIAssignID) |
115 | HANDLE_SPECIALIZED_MDNODE_BRANCH(DIMacroNode) |
116 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIMacro) |
117 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIMacroFile) |
118 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DICommonBlock) |
119 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIStringType) |
120 | HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGenericSubrange) |
121 | |
122 | #undef HANDLE_METADATA |
123 | #undef HANDLE_METADATA_LEAF |
124 | #undef HANDLE_METADATA_BRANCH |
125 | #undef HANDLE_MDNODE_LEAF |
126 | #undef HANDLE_MDNODE_LEAF_UNIQUABLE |
127 | #undef HANDLE_MDNODE_BRANCH |
128 | #undef HANDLE_SPECIALIZED_MDNODE_LEAF |
129 | #undef HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE |
130 | #undef HANDLE_SPECIALIZED_MDNODE_BRANCH |
131 |