| //===- llvm/IR/Metadata.def - Metadata definitions --------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Macros for running through all types of metadata. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if !(defined HANDLE_METADATA || defined HANDLE_METADATA_LEAF || \ | |
| defined HANDLE_METADATA_BRANCH || defined HANDLE_MDNODE_LEAF || \ | |
| defined HANDLE_MDNODE_LEAF_UNIQUABLE || defined HANDLE_MDNODE_BRANCH || \ | |
| defined HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE || \ | |
| defined HANDLE_SPECIALIZED_MDNODE_LEAF || \ | |
| defined HANDLE_SPECIALIZED_MDNODE_BRANCH) | |
| #error "Missing macro definition of HANDLE_METADATA*" | |
| #endif | |
| // Handler for all types of metadata. | |
| #ifndef HANDLE_METADATA | |
| #define HANDLE_METADATA(CLASS) | |
| #endif | |
| // Handler for leaf nodes in the class hierarchy. | |
| #ifndef HANDLE_METADATA_LEAF | |
| #define HANDLE_METADATA_LEAF(CLASS) HANDLE_METADATA(CLASS) | |
| #endif | |
| // Handler for non-leaf nodes in the class hierarchy. | |
| #ifndef HANDLE_METADATA_BRANCH | |
| #define HANDLE_METADATA_BRANCH(CLASS) HANDLE_METADATA(CLASS) | |
| #endif | |
| // Handler for specialized and uniquable leaf nodes under MDNode. Defers to | |
| // HANDLE_MDNODE_LEAF_UNIQUABLE if it's defined, otherwise to | |
| // HANDLE_SPECIALIZED_MDNODE_LEAF. | |
| #ifndef HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE | |
| #ifdef HANDLE_MDNODE_LEAF_UNIQUABLE | |
| #define HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(CLASS) \ | |
| HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) | |
| #else | |
| #define HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(CLASS) \ | |
| HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) | |
| #endif | |
| #endif | |
| // Handler for leaf nodes under MDNode. | |
| #ifndef HANDLE_MDNODE_LEAF_UNIQUABLE | |
| #define HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) HANDLE_MDNODE_LEAF(CLASS) | |
| #endif | |
| // Handler for leaf nodes under MDNode. | |
| #ifndef HANDLE_MDNODE_LEAF | |
| #define HANDLE_MDNODE_LEAF(CLASS) HANDLE_METADATA_LEAF(CLASS) | |
| #endif | |
| // Handler for non-leaf nodes under MDNode. | |
| #ifndef HANDLE_MDNODE_BRANCH | |
| #define HANDLE_MDNODE_BRANCH(CLASS) HANDLE_METADATA_BRANCH(CLASS) | |
| #endif | |
| // Handler for specialized leaf nodes under MDNode. | |
| #ifndef HANDLE_SPECIALIZED_MDNODE_LEAF | |
| #define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) HANDLE_MDNODE_LEAF(CLASS) | |
| #endif | |
| // Handler for specialized non-leaf nodes under MDNode. | |
| #ifndef HANDLE_SPECIALIZED_MDNODE_BRANCH | |
| #define HANDLE_SPECIALIZED_MDNODE_BRANCH(CLASS) HANDLE_MDNODE_BRANCH(CLASS) | |
| #endif | |
| HANDLE_METADATA_LEAF(MDString) | |
| HANDLE_METADATA_BRANCH(ValueAsMetadata) | |
| HANDLE_METADATA_LEAF(ConstantAsMetadata) | |
| HANDLE_METADATA_LEAF(LocalAsMetadata) | |
| HANDLE_METADATA_LEAF(DistinctMDOperandPlaceholder) | |
| HANDLE_MDNODE_BRANCH(MDNode) | |
| HANDLE_MDNODE_LEAF_UNIQUABLE(MDTuple) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocation) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIExpression) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariableExpression) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DINode) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(GenericDINode) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubrange) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIEnumerator) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DIScope) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DIType) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIBasicType) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIDerivedType) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DICompositeType) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubroutineType) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIFile) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF(DICompileUnit) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DILocalScope) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubprogram) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DILexicalBlockBase) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILexicalBlock) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILexicalBlockFile) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DINamespace) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIModule) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DITemplateParameter) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DITemplateTypeParameter) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DITemplateValueParameter) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DIVariable) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariable) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocalVariable) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIObjCProperty) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIImportedEntity) | |
| HANDLE_SPECIALIZED_MDNODE_BRANCH(DIMacroNode) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIMacro) | |
| HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIMacroFile) | |
| #undef HANDLE_METADATA | |
| #undef HANDLE_METADATA_LEAF | |
| #undef HANDLE_METADATA_BRANCH | |
| #undef HANDLE_MDNODE_LEAF | |
| #undef HANDLE_MDNODE_LEAF_UNIQUABLE | |
| #undef HANDLE_MDNODE_BRANCH | |
| #undef HANDLE_SPECIALIZED_MDNODE_LEAF | |
| #undef HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE | |
| #undef HANDLE_SPECIALIZED_MDNODE_BRANCH |