From 139006ceb641f038a2b19cac1174316e57004ed6 Mon Sep 17 00:00:00 2001 From: John McCall Date: Wed, 11 Dec 2019 03:30:22 -0500 Subject: [PATCH] Extract the TypeClass <-> TypeCode map into a .def file; NFC. --- clang/include/clang/Serialization/ASTBitCodes.h | 147 +-------------------- clang/include/clang/Serialization/TypeBitCodes.def | 62 +++++++++ 2 files changed, 67 insertions(+), 142 deletions(-) create mode 100644 clang/include/clang/Serialization/TypeBitCodes.def diff --git a/clang/include/clang/Serialization/ASTBitCodes.h b/clang/include/clang/Serialization/ASTBitCodes.h index d47ddad..1bfcbda 100644 --- a/clang/include/clang/Serialization/ASTBitCodes.h +++ b/clang/include/clang/Serialization/ASTBitCodes.h @@ -1040,149 +1040,12 @@ namespace serialization { /// constant describes a record for a specific type class in the /// AST. Note that DeclCode values share this code space. enum TypeCode { - /// An ExtQualType record. - TYPE_EXT_QUAL = 1, - - /// A ComplexType record. - TYPE_COMPLEX = 3, - - /// A PointerType record. - TYPE_POINTER = 4, - - /// A BlockPointerType record. - TYPE_BLOCK_POINTER = 5, - - /// An LValueReferenceType record. - TYPE_LVALUE_REFERENCE = 6, - - /// An RValueReferenceType record. - TYPE_RVALUE_REFERENCE = 7, - - /// A MemberPointerType record. - TYPE_MEMBER_POINTER = 8, - - /// A ConstantArrayType record. - TYPE_CONSTANT_ARRAY = 9, - - /// An IncompleteArrayType record. - TYPE_INCOMPLETE_ARRAY = 10, - - /// A VariableArrayType record. - TYPE_VARIABLE_ARRAY = 11, - - /// A VectorType record. - TYPE_VECTOR = 12, - - /// An ExtVectorType record. - TYPE_EXT_VECTOR = 13, - - /// A FunctionNoProtoType record. - TYPE_FUNCTION_NO_PROTO = 14, - - /// A FunctionProtoType record. - TYPE_FUNCTION_PROTO = 15, - - /// A TypedefType record. - TYPE_TYPEDEF = 16, - - /// A TypeOfExprType record. - TYPE_TYPEOF_EXPR = 17, - - /// A TypeOfType record. - TYPE_TYPEOF = 18, - - /// A RecordType record. - TYPE_RECORD = 19, - - /// An EnumType record. - TYPE_ENUM = 20, - - /// An ObjCInterfaceType record. - TYPE_OBJC_INTERFACE = 21, - - /// An ObjCObjectPointerType record. - TYPE_OBJC_OBJECT_POINTER = 22, - - /// a DecltypeType record. - TYPE_DECLTYPE = 23, - - /// An ElaboratedType record. - TYPE_ELABORATED = 24, - - /// A SubstTemplateTypeParmType record. - TYPE_SUBST_TEMPLATE_TYPE_PARM = 25, +#define TYPE_BIT_CODE(CLASS_ID, CODE_ID, CODE_VALUE) \ + TYPE_##CODE_ID = CODE_VALUE, +#include "clang/Serialization/TypeBitCodes.def" - /// An UnresolvedUsingType record. - TYPE_UNRESOLVED_USING = 26, - - /// An InjectedClassNameType record. - TYPE_INJECTED_CLASS_NAME = 27, - - /// An ObjCObjectType record. - TYPE_OBJC_OBJECT = 28, - - /// An TemplateTypeParmType record. - TYPE_TEMPLATE_TYPE_PARM = 29, - - /// An TemplateSpecializationType record. - TYPE_TEMPLATE_SPECIALIZATION = 30, - - /// A DependentNameType record. - TYPE_DEPENDENT_NAME = 31, - - /// A DependentTemplateSpecializationType record. - TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION = 32, - - /// A DependentSizedArrayType record. - TYPE_DEPENDENT_SIZED_ARRAY = 33, - - /// A ParenType record. - TYPE_PAREN = 34, - - /// A PackExpansionType record. - TYPE_PACK_EXPANSION = 35, - - /// An AttributedType record. - TYPE_ATTRIBUTED = 36, - - /// A SubstTemplateTypeParmPackType record. - TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK = 37, - - /// A AutoType record. - TYPE_AUTO = 38, - - /// A UnaryTransformType record. - TYPE_UNARY_TRANSFORM = 39, - - /// An AtomicType record. - TYPE_ATOMIC = 40, - - /// A DecayedType record. - TYPE_DECAYED = 41, - - /// An AdjustedType record. - TYPE_ADJUSTED = 42, - - /// A PipeType record. - TYPE_PIPE = 43, - - /// An ObjCTypeParamType record. - TYPE_OBJC_TYPE_PARAM = 44, - - /// A DeducedTemplateSpecializationType record. - TYPE_DEDUCED_TEMPLATE_SPECIALIZATION = 45, - - /// A DependentSizedExtVectorType record. - TYPE_DEPENDENT_SIZED_EXT_VECTOR = 46, - - /// A DependentAddressSpaceType record. - TYPE_DEPENDENT_ADDRESS_SPACE = 47, - - /// A dependentSizedVectorType record. - TYPE_DEPENDENT_SIZED_VECTOR = 48, - - /// A type defined in a macro. - TYPE_MACRO_QUALIFIED = 49 + /// An ExtQualType record. + TYPE_EXT_QUAL = 1 }; /// The type IDs for special types constructed by semantic diff --git a/clang/include/clang/Serialization/TypeBitCodes.def b/clang/include/clang/Serialization/TypeBitCodes.def new file mode 100644 index 0000000..38c73cc --- /dev/null +++ b/clang/include/clang/Serialization/TypeBitCodes.def @@ -0,0 +1,62 @@ +//===--- TypeNodeBitCodes.def - Type to bitcode correspondance --*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file provides an x-macro link between AST Type IDs and +// their stable serialized bit-code record type IDs. +// +//===----------------------------------------------------------------------===// + +TYPE_BIT_CODE(Complex, COMPLEX, 3) +TYPE_BIT_CODE(Pointer, POINTER, 4) +TYPE_BIT_CODE(BlockPointer, BLOCK_POINTER, 5) +TYPE_BIT_CODE(LValueReference, LVALUE_REFERENCE, 6) +TYPE_BIT_CODE(RValueReference, RVALUE_REFERENCE, 7) +TYPE_BIT_CODE(MemberPointer, MEMBER_POINTER, 8) +TYPE_BIT_CODE(ConstantArray, CONSTANT_ARRAY, 9) +TYPE_BIT_CODE(IncompleteArray, INCOMPLETE_ARRAY, 10) +TYPE_BIT_CODE(VariableArray, VARIABLE_ARRAY, 11) +TYPE_BIT_CODE(Vector, VECTOR, 12) +TYPE_BIT_CODE(ExtVector, EXT_VECTOR, 13) +TYPE_BIT_CODE(FunctionNoProto, FUNCTION_NO_PROTO, 14) +TYPE_BIT_CODE(FunctionProto, FUNCTION_PROTO, 15) +TYPE_BIT_CODE(Typedef, TYPEDEF, 16) +TYPE_BIT_CODE(TypeOfExpr, TYPEOF_EXPR, 17) +TYPE_BIT_CODE(TypeOf, TYPEOF, 18) +TYPE_BIT_CODE(Record, RECORD, 19) +TYPE_BIT_CODE(Enum, ENUM, 20) +TYPE_BIT_CODE(ObjCInterface, OBJC_INTERFACE, 21) +TYPE_BIT_CODE(ObjCObjectPointer, OBJC_OBJECT_POINTER, 22) +TYPE_BIT_CODE(Decltype, DECLTYPE, 23) +TYPE_BIT_CODE(Elaborated, ELABORATED, 24) +TYPE_BIT_CODE(SubstTemplateTypeParm, SUBST_TEMPLATE_TYPE_PARM, 25) +TYPE_BIT_CODE(UnresolvedUsing, UNRESOLVED_USING, 26) +TYPE_BIT_CODE(InjectedClassName, INJECTED_CLASS_NAME, 27) +TYPE_BIT_CODE(ObjCObject, OBJC_OBJECT, 28) +TYPE_BIT_CODE(TemplateTypeParm, TEMPLATE_TYPE_PARM, 29) +TYPE_BIT_CODE(TemplateSpecialization, TEMPLATE_SPECIALIZATION, 30) +TYPE_BIT_CODE(DependentName, DEPENDENT_NAME, 31) +TYPE_BIT_CODE(DependentTemplateSpecialization, DEPENDENT_TEMPLATE_SPECIALIZATION, 32) +TYPE_BIT_CODE(DependentSizedArray, DEPENDENT_SIZED_ARRAY, 33) +TYPE_BIT_CODE(Paren, PAREN, 34) +TYPE_BIT_CODE(PackExpansion, PACK_EXPANSION, 35) +TYPE_BIT_CODE(Attributed, ATTRIBUTED, 36) +TYPE_BIT_CODE(SubstTemplateTypeParmPack, SUBST_TEMPLATE_TYPE_PARM_PACK, 37) +TYPE_BIT_CODE(Auto, AUTO, 38) +TYPE_BIT_CODE(UnaryTransform, UNARY_TRANSFORM, 39) +TYPE_BIT_CODE(Atomic, ATOMIC, 40) +TYPE_BIT_CODE(Decayed, DECAYED, 41) +TYPE_BIT_CODE(Adjusted, ADJUSTED, 42) +TYPE_BIT_CODE(Pipe, PIPE, 43) +TYPE_BIT_CODE(ObjCTypeParam, OBJC_TYPE_PARAM, 44) +TYPE_BIT_CODE(DeducedTemplateSpecialization, DEDUCED_TEMPLATE_SPECIALIZATION, 45) +TYPE_BIT_CODE(DependentSizedExtVector, DEPENDENT_SIZED_EXT_VECTOR, 46) +TYPE_BIT_CODE(DependentAddressSpace, DEPENDENT_ADDRESS_SPACE, 47) +TYPE_BIT_CODE(DependentVector, DEPENDENT_SIZED_VECTOR, 48) +TYPE_BIT_CODE(MacroQualified, MACRO_QUALIFIED, 49) + +#undef TYPE_BIT_CODE -- 2.7.4