Extract the TypeClass <-> TypeCode map into a .def file; NFC.
authorJohn McCall <rjmccall@apple.com>
Wed, 11 Dec 2019 08:30:22 +0000 (03:30 -0500)
committerJohn McCall <rjmccall@apple.com>
Sat, 14 Dec 2019 05:16:47 +0000 (00:16 -0500)
clang/include/clang/Serialization/ASTBitCodes.h
clang/include/clang/Serialization/TypeBitCodes.def [new file with mode: 0644]

index d47ddad..1bfcbda 100644 (file)
@@ -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 (file)
index 0000000..38c73cc
--- /dev/null
@@ -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