Warning, /include/llvm/IR/Metadata.def is written in an unsupported language. File is not indexed.
0001 //===- llvm/IR/Metadata.def - Metadata definitions --------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // Macros for running through all types of metadata.
0010 //
0011 //===----------------------------------------------------------------------===//
0012
0013 #if !(defined HANDLE_METADATA || defined HANDLE_METADATA_LEAF || \
0014 defined HANDLE_METADATA_BRANCH || defined HANDLE_MDNODE_LEAF || \
0015 defined HANDLE_MDNODE_LEAF_UNIQUABLE || defined HANDLE_MDNODE_BRANCH || \
0016 defined HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE || \
0017 defined HANDLE_SPECIALIZED_MDNODE_LEAF || \
0018 defined HANDLE_SPECIALIZED_MDNODE_BRANCH)
0019 #error "Missing macro definition of HANDLE_METADATA*"
0020 #endif
0021
0022 // Handler for all types of metadata.
0023 #ifndef HANDLE_METADATA
0024 #define HANDLE_METADATA(CLASS)
0025 #endif
0026
0027 // Handler for leaf nodes in the class hierarchy.
0028 #ifndef HANDLE_METADATA_LEAF
0029 #define HANDLE_METADATA_LEAF(CLASS) HANDLE_METADATA(CLASS)
0030 #endif
0031
0032 // Handler for non-leaf nodes in the class hierarchy.
0033 #ifndef HANDLE_METADATA_BRANCH
0034 #define HANDLE_METADATA_BRANCH(CLASS) HANDLE_METADATA(CLASS)
0035 #endif
0036
0037 // Handler for specialized and uniquable leaf nodes under MDNode. Defers to
0038 // HANDLE_MDNODE_LEAF_UNIQUABLE if it's defined, otherwise to
0039 // HANDLE_SPECIALIZED_MDNODE_LEAF.
0040 #ifndef HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE
0041 #ifdef HANDLE_MDNODE_LEAF_UNIQUABLE
0042 #define HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(CLASS) \
0043 HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS)
0044 #else
0045 #define HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(CLASS) \
0046 HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS)
0047 #endif
0048 #endif
0049
0050 // Handler for leaf nodes under MDNode.
0051 #ifndef HANDLE_MDNODE_LEAF_UNIQUABLE
0052 #define HANDLE_MDNODE_LEAF_UNIQUABLE(CLASS) HANDLE_MDNODE_LEAF(CLASS)
0053 #endif
0054
0055 // Handler for leaf nodes under MDNode.
0056 #ifndef HANDLE_MDNODE_LEAF
0057 #define HANDLE_MDNODE_LEAF(CLASS) HANDLE_METADATA_LEAF(CLASS)
0058 #endif
0059
0060 // Handler for non-leaf nodes under MDNode.
0061 #ifndef HANDLE_MDNODE_BRANCH
0062 #define HANDLE_MDNODE_BRANCH(CLASS) HANDLE_METADATA_BRANCH(CLASS)
0063 #endif
0064
0065 // Handler for specialized leaf nodes under MDNode.
0066 #ifndef HANDLE_SPECIALIZED_MDNODE_LEAF
0067 #define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) HANDLE_MDNODE_LEAF(CLASS)
0068 #endif
0069
0070 // Handler for specialized non-leaf nodes under MDNode.
0071 #ifndef HANDLE_SPECIALIZED_MDNODE_BRANCH
0072 #define HANDLE_SPECIALIZED_MDNODE_BRANCH(CLASS) HANDLE_MDNODE_BRANCH(CLASS)
0073 #endif
0074
0075 HANDLE_METADATA_LEAF(MDString)
0076 HANDLE_METADATA_BRANCH(ValueAsMetadata)
0077 HANDLE_METADATA_LEAF(ConstantAsMetadata)
0078 HANDLE_METADATA_LEAF(LocalAsMetadata)
0079 HANDLE_METADATA_LEAF(DistinctMDOperandPlaceholder)
0080 HANDLE_METADATA_LEAF(DIArgList)
0081 HANDLE_MDNODE_BRANCH(MDNode)
0082 HANDLE_MDNODE_LEAF_UNIQUABLE(MDTuple)
0083 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocation)
0084 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIExpression)
0085 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariableExpression)
0086 HANDLE_SPECIALIZED_MDNODE_BRANCH(DINode)
0087 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(GenericDINode)
0088 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubrange)
0089 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIEnumerator)
0090 HANDLE_SPECIALIZED_MDNODE_BRANCH(DIScope)
0091 HANDLE_SPECIALIZED_MDNODE_BRANCH(DIType)
0092 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIBasicType)
0093 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIDerivedType)
0094 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DICompositeType)
0095 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubroutineType)
0096 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIFile)
0097 HANDLE_SPECIALIZED_MDNODE_LEAF(DICompileUnit)
0098 HANDLE_SPECIALIZED_MDNODE_BRANCH(DILocalScope)
0099 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DISubprogram)
0100 HANDLE_SPECIALIZED_MDNODE_BRANCH(DILexicalBlockBase)
0101 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILexicalBlock)
0102 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILexicalBlockFile)
0103 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DINamespace)
0104 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIModule)
0105 HANDLE_SPECIALIZED_MDNODE_BRANCH(DITemplateParameter)
0106 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DITemplateTypeParameter)
0107 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DITemplateValueParameter)
0108 HANDLE_SPECIALIZED_MDNODE_BRANCH(DIVariable)
0109 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGlobalVariable)
0110 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILocalVariable)
0111 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DILabel)
0112 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIObjCProperty)
0113 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIImportedEntity)
0114 HANDLE_SPECIALIZED_MDNODE_LEAF(DIAssignID)
0115 HANDLE_SPECIALIZED_MDNODE_BRANCH(DIMacroNode)
0116 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIMacro)
0117 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIMacroFile)
0118 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DICommonBlock)
0119 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIStringType)
0120 HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE(DIGenericSubrange)
0121
0122 #undef HANDLE_METADATA
0123 #undef HANDLE_METADATA_LEAF
0124 #undef HANDLE_METADATA_BRANCH
0125 #undef HANDLE_MDNODE_LEAF
0126 #undef HANDLE_MDNODE_LEAF_UNIQUABLE
0127 #undef HANDLE_MDNODE_BRANCH
0128 #undef HANDLE_SPECIALIZED_MDNODE_LEAF
0129 #undef HANDLE_SPECIALIZED_MDNODE_LEAF_UNIQUABLE
0130 #undef HANDLE_SPECIALIZED_MDNODE_BRANCH