clang 24.0.0git
ASTBitCodes.h
Go to the documentation of this file.
1//===- ASTBitCodes.h - Enum values for the PCH bitcode format ---*- 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// This header defines Bitcode enum values for Clang serialized AST files.
10//
11// The enum values defined in this file should be considered permanent. If
12// new features are added, they should have values added at the end of the
13// respective lists.
14//
15//===----------------------------------------------------------------------===//
16
17#ifndef LLVM_CLANG_SERIALIZATION_ASTBITCODES_H
18#define LLVM_CLANG_SERIALIZATION_ASTBITCODES_H
19
20#include "clang/AST/DeclID.h"
22#include "clang/AST/Type.h"
27#include "llvm/ADT/DenseMapInfo.h"
28#include "llvm/Bitstream/BitCodes.h"
29#include "llvm/Support/MathExtras.h"
30#include <cassert>
31#include <cstdint>
32
33namespace clang {
34namespace serialization {
35
36/// AST file major version number supported by this version of
37/// Clang.
38///
39/// Whenever the AST file format changes in a way that makes it
40/// incompatible with previous versions (such that a reader
41/// designed for the previous version could not support reading
42/// the new version), this number should be increased.
43///
44/// Version 4 of AST files also requires that the version control branch and
45/// revision match exactly, since there is no backward compatibility of
46/// AST files at this time.
47const unsigned VERSION_MAJOR = 41;
48
49/// AST file minor version number supported by this version of
50/// Clang.
51///
52/// Whenever the AST format changes in a way that is still
53/// compatible with previous versions (such that a reader designed
54/// for the previous version could still support reading the new
55/// version by ignoring new kinds of subblocks), this number
56/// should be increased.
57const unsigned VERSION_MINOR = 0;
58
59/// An ID number that refers to an identifier in an AST file.
60///
61/// The ID numbers of identifiers are consecutive (in order of discovery)
62/// and start at 1. 0 is reserved for NULL.
63using IdentifierID = uint64_t;
64
65/// The number of predefined identifier IDs.
66const unsigned int NUM_PREDEF_IDENT_IDS = 1;
67
68/// An ID number that refers to a declaration in an AST file. See the comments
69/// in DeclIDBase for details.
71
72/// An ID number that refers to a type in an AST file.
73///
74/// The ID of a type is partitioned into three parts:
75/// - the lower three bits are used to store the const/volatile/restrict
76/// qualifiers (as with QualType).
77/// - the next 29 bits provide a type index in the corresponding
78/// module file.
79/// - the upper 32 bits provide a module file index.
80///
81/// The type index values are partitioned into two
82/// sets. The values below NUM_PREDEF_TYPE_IDs are predefined type
83/// IDs (based on the PREDEF_TYPE_*_ID constants), with 0 as a
84/// placeholder for "no type". The module file index for predefined
85/// types are always 0 since they don't belong to any modules.
86/// Values from NUM_PREDEF_TYPE_IDs are other types that have
87/// serialized representations.
88using TypeID = uint64_t;
89/// Same with TypeID except that the LocalTypeID is only meaningful
90/// with the corresponding ModuleFile.
91///
92/// FIXME: Make TypeID and LocalTypeID a class to improve the type
93/// safety.
95
96/// A type index; the type ID with the qualifier bits removed.
97/// Keep structure alignment 32-bit since the blob is assumed as 32-bit
98/// aligned.
99class TypeIdx {
100 uint32_t ModuleFileIndex = 0;
101 uint32_t Idx = 0;
102
103public:
104 TypeIdx() = default;
105
106 explicit TypeIdx(uint32_t ModuleFileIdx, uint32_t Idx)
107 : ModuleFileIndex(ModuleFileIdx), Idx(Idx) {}
108
109 uint32_t getModuleFileIndex() const { return ModuleFileIndex; }
110
111 uint64_t getValue() const { return ((uint64_t)ModuleFileIndex << 32) | Idx; }
112
113 TypeID asTypeID(unsigned FastQuals) const {
114 if (Idx == uint32_t(-1))
115 return TypeID(-1);
116
117 unsigned Index = (Idx << Qualifiers::FastWidth) | FastQuals;
118 return ((uint64_t)ModuleFileIndex << 32) | Index;
119 }
120
122 if (ID == TypeID(-1))
123 return TypeIdx(0, -1);
124
125 return TypeIdx(ID >> 32, (ID & llvm::maskTrailingOnes<TypeID>(32)) >>
127 }
128};
129
130static_assert(alignof(TypeIdx) == 4);
131
132/// A structure for putting "fast"-unqualified QualTypes into a
133/// DenseMap. This uses the standard pointer hash function.
135 static bool isEqual(QualType A, QualType B) { return A == B; }
136
137 static unsigned getHashValue(QualType T) {
138 assert(!T.getLocalFastQualifiers() &&
139 "hash invalid for types with fast quals");
140 uintptr_t v = reinterpret_cast<uintptr_t>(T.getAsOpaquePtr());
141 return (unsigned(v) >> 4) ^ (unsigned(v) >> 9);
142 }
143};
144
145/// An ID number that refers to a macro in an AST file.
146using MacroID = uint64_t;
147
148/// A global ID number that refers to a macro in an AST file.
149using GlobalMacroID = uint64_t;
150
151/// A local to a module ID number that refers to a macro in an
152/// AST file.
153using LocalMacroID = uint64_t;
154
155/// The number of predefined macro IDs.
156const unsigned int NUM_PREDEF_MACRO_IDS = 1;
157
158/// An ID number that refers to an ObjC selector in an AST file.
160
161/// The number of predefined selector IDs.
162const unsigned int NUM_PREDEF_SELECTOR_IDS = 1;
163
164/// An ID number that refers to a set of CXXBaseSpecifiers in an
165/// AST file.
167
168/// An ID number that refers to a list of CXXCtorInitializers in an
169/// AST file.
171
172/// An ID number that refers to an entity in the detailed
173/// preprocessing record.
174using PreprocessedEntityID = uint64_t;
175
176/// An ID number that refers to a submodule in a module file.
178
179/// The number of predefined submodule IDs.
180const unsigned int NUM_PREDEF_SUBMODULE_IDS = 1;
181
182/// 32 aligned uint64_t in the AST file. Use splitted 64-bit integer into
183/// low/high parts to keep structure alignment 32-bit (it is important
184/// because blobs in bitstream are 32-bit aligned). This structure is
185/// serialized "as is" to the AST file.
187 uint32_t BitLow = 0;
188 uint32_t BitHigh = 0;
189
190public:
191 UnalignedUInt64() = default;
192 UnalignedUInt64(uint64_t BitOffset) { set(BitOffset); }
193
194 void set(uint64_t Offset) {
195 BitLow = Offset;
196 BitHigh = Offset >> 32;
197 }
198
199 uint64_t get() const { return BitLow | (uint64_t(BitHigh) << 32); }
200};
201
202/// Source range/offset of a preprocessed entity.
204 using RawLocEncoding = SourceLocationEncoding::RawLocEncoding;
205
206 /// Raw source location of beginning of range.
207 UnalignedUInt64 Begin;
208
209 /// Raw source location of end of range.
210 UnalignedUInt64 End;
211
212 /// Offset in the AST file relative to ModuleFile::MacroOffsetsBase.
213 uint32_t BitOffset;
214
215public:
216 PPEntityOffset(RawLocEncoding Begin, RawLocEncoding End, uint32_t BitOffset)
217 : Begin(Begin), End(End), BitOffset(BitOffset) {}
218
219 RawLocEncoding getBegin() const { return Begin.get(); }
220 RawLocEncoding getEnd() const { return End.get(); }
221
222 uint32_t getOffset() const { return BitOffset; }
223};
224
225/// Source range of a skipped preprocessor region
227 using RawLocEncoding = SourceLocationEncoding::RawLocEncoding;
228
229 /// Raw source location of beginning of range.
230 UnalignedUInt64 Begin;
231 /// Raw source location of end of range.
232 UnalignedUInt64 End;
233
234public:
235 PPSkippedRange(RawLocEncoding Begin, RawLocEncoding End)
236 : Begin(Begin), End(End) {}
237
238 RawLocEncoding getBegin() const { return Begin.get(); }
239 RawLocEncoding getEnd() const { return End.get(); }
240};
241
242/// Source location and bit offset of a declaration. Keep
243/// structure alignment 32-bit since the blob is assumed as 32-bit aligned.
245 using RawLocEncoding = SourceLocationEncoding::RawLocEncoding;
246
247 /// Raw source location.
248 UnalignedUInt64 RawLoc;
249
250 /// Offset relative to the start of the DECLTYPES_BLOCK block.
251 UnalignedUInt64 BitOffset;
252
253public:
254 DeclOffset() = default;
255 DeclOffset(RawLocEncoding RawLoc, uint64_t BitOffset,
256 uint64_t DeclTypesBlockStartOffset)
257 : RawLoc(RawLoc) {
258 setBitOffset(BitOffset, DeclTypesBlockStartOffset);
259 }
260
261 void setRawLoc(RawLocEncoding Loc) { RawLoc = Loc; }
262
263 RawLocEncoding getRawLoc() const { return RawLoc.get(); }
264
265 void setBitOffset(uint64_t Offset, const uint64_t DeclTypesBlockStartOffset) {
266 BitOffset.set(Offset - DeclTypesBlockStartOffset);
267 }
268
269 uint64_t getBitOffset(const uint64_t DeclTypesBlockStartOffset) const {
270 return BitOffset.get() + DeclTypesBlockStartOffset;
271 }
272};
273
274// The unaligned decl ID used in the Blobs of bistreams.
276 llvm::support::detail::packed_endian_specific_integral<
277 serialization::DeclID, llvm::endianness::native,
278 llvm::support::unaligned>;
279
280/// The number of predefined preprocessed entity IDs.
281const unsigned int NUM_PREDEF_PP_ENTITY_IDS = 1;
282
283/// Describes the various kinds of blocks that occur within
284/// an AST file.
286 /// The AST block, which acts as a container around the
287 /// full AST block.
288 AST_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID,
289
290 /// The block containing information about the source
291 /// manager.
293
294 /// The block containing information about the
295 /// preprocessor.
297
298 /// The block containing the definitions of all of the
299 /// types and decls used within the AST file.
301
302 /// The block containing the detailed preprocessing record.
304
305 /// The block containing the submodule structure.
307
308 /// The block containing comments.
310
311 /// The control block, which contains all of the
312 /// information that needs to be validated prior to committing
313 /// to loading the AST file.
315
316 /// The block of input files, which were used as inputs
317 /// to create this AST file.
318 ///
319 /// This block is part of the control block.
321
322 /// The block of configuration options, used to check that
323 /// a module is being used in a configuration compatible with the
324 /// configuration in which it was built.
325 ///
326 /// This block is part of the control block.
328
329 /// A block containing a module file extension.
331
332 /// A block with unhashed content.
333 ///
334 /// These records should not change the \a ASTFileSignature. See \a
335 /// UnhashedControlBlockRecordTypes for the list of records.
337};
338
339/// Record types that occur within the control block.
341 /// AST file metadata, including the AST file version number
342 /// and information about the compiler used to build this AST file.
344
345 /// Record code for another AST file imported by this AST file.
347
348 /// Record code for the original file that was used to
349 /// generate the AST file, including both its file ID and its
350 /// name.
352
353 /// Record code for file ID of the file or buffer that was used to
354 /// generate the AST file.
356
357 /// Offsets into the input-files block where input files
358 /// reside.
360
361 /// Record code for the module name.
363
364 /// Record code for the module map file that was used to build this
365 /// AST file.
367
368 /// Record code for the module build directory.
370
371 /// Record code for the directories this AST file depends on the listing of.
372 /// Only emitted when non-empty.
374};
375
376/// Record types that occur within the options block inside
377/// the control block.
379 /// Record code for the language options table.
380 ///
381 /// The record with this code contains the contents of the
382 /// LangOptions structure. We serialize the entire contents of
383 /// the structure, and let the reader decide which options are
384 /// actually important to check.
386
387 /// Record code for the target options table.
389
390 /// Record code for the filesystem options table.
392
393 /// Record code for the headers search options table.
395
396 /// Record code for the preprocessor options table.
398
399 /// Record code for the codegen options table.
401};
402
403/// Record codes for the unhashed control block.
405 /// Record code for the signature that identifiers this AST file.
407
408 /// Record code for the content hash of the AST block.
410
411 /// Record code for the diagnostic options table.
413
414 /// Record code for the headers search paths.
416
417 /// Record code for \#pragma diagnostic mappings.
419
420 /// Record code for the indices of used header search entries.
422
423 /// Record code for the indices of used VFSs.
425};
426
427/// Record code for extension blocks.
429 /// Metadata describing this particular extension.
431
432 /// The first record ID allocated to the extensions themselves.
434};
435
436/// Record types that occur within the input-files block
437/// inside the control block.
439 /// An input file.
441
442 /// The input file content hash
444};
445
446/// Record types that occur within the AST block itself.
448 /// Record code for the offsets of each type.
449 ///
450 /// The TYPE_OFFSET constant describes the record that occurs
451 /// within the AST block. The record itself is an array of offsets that
452 /// point into the declarations and types block (identified by
453 /// DECLTYPES_BLOCK_ID). The index into the array is based on the ID
454 /// of a type. For a given type ID @c T, the lower three bits of
455 /// @c T are its qualifiers (const, volatile, restrict), as in
456 /// the QualType class. The upper bits, after being shifted and
457 /// subtracting NUM_PREDEF_TYPE_IDS, are used to index into the
458 /// TYPE_OFFSET block to determine the offset of that type's
459 /// corresponding record within the DECLTYPES_BLOCK_ID block.
461
462 /// Record code for the offsets of each decl.
463 ///
464 /// The DECL_OFFSET constant describes the record that occurs
465 /// within the block identified by DECL_OFFSETS_BLOCK_ID within
466 /// the AST block. The record itself is an array of offsets that
467 /// point into the declarations and types block (identified by
468 /// DECLTYPES_BLOCK_ID). The declaration ID is an index into this
469 /// record, after subtracting one to account for the use of
470 /// declaration ID 0 for a NULL declaration pointer. Index 0 is
471 /// reserved for the translation unit declaration.
473
474 /// Record code for the table of offsets of each
475 /// identifier ID.
476 ///
477 /// The offset table contains offsets into the blob stored in
478 /// the IDENTIFIER_TABLE record. Each offset points to the
479 /// NULL-terminated string that corresponds to that identifier.
481
482 /// This is so that older clang versions, before the introduction
483 /// of the control block, can read and reject the newer PCH format.
484 /// *DON'T CHANGE THIS NUMBER*.
486
487 /// Record code for the identifier table.
488 ///
489 /// The identifier table is a simple blob that contains
490 /// NULL-terminated strings for all of the identifiers
491 /// referenced by the AST file. The IDENTIFIER_OFFSET table
492 /// contains the mapping from identifier IDs to the characters
493 /// in this blob. Note that the starting offsets of all of the
494 /// identifiers are odd, so that, when the identifier offset
495 /// table is loaded in, we can use the low bit to distinguish
496 /// between offsets (for unresolved identifier IDs) and
497 /// IdentifierInfo pointers (for already-resolved identifier
498 /// IDs).
500
501 /// Record code for the array of eagerly deserialized decls.
502 ///
503 /// The AST file contains a list of all of the declarations that should be
504 /// eagerly deserialized present within the parsed headers, stored as an
505 /// array of declaration IDs. These declarations will be
506 /// reported to the AST consumer after the AST file has been
507 /// read, since their presence can affect the semantics of the
508 /// program (e.g., for code generation).
510
511 /// Record code for the set of non-builtin, special
512 /// types.
513 ///
514 /// This record contains the type IDs for the various type nodes
515 /// that are constructed during semantic analysis (e.g.,
516 /// __builtin_va_list). The SPECIAL_TYPE_* constants provide
517 /// offsets into this record.
519
520 /// Record code for the extra statistics we gather while
521 /// generating an AST file.
523
524 /// Record code for the array of tentative definitions.
526
527 // ID 10 used to be for a list of extern "C" declarations.
528
529 /// Record code for the table of offsets into the
530 /// Objective-C method pool.
532
533 /// Record code for the Objective-C method pool,
535
536 /// The value of the next __COUNTER__ to dispense.
537 /// [PP_COUNTER_VALUE, Val]
539
540 /// Record code for the table of offsets into the block
541 /// of source-location information.
543
544 // ID 15 used to be for source location entry preloads.
545
546 /// Record code for the set of ext_vector type names.
548
549 /// Record code for the array of unused file scoped decls.
551
552 /// Record code for the table of offsets to entries in the
553 /// preprocessing record.
555
556 /// Record code for the array of VTable uses.
558
559 // ID 20 used to be for a list of dynamic classes.
560
561 /// Record code for referenced selector pool.
563
564 /// Record code for an update to the TU's lexically contained
565 /// declarations.
567
568 // ID 23 used to be for a list of local redeclarations.
569
570 /// Record code for declarations that Sema keeps references of.
572
573 /// Record code for weak undeclared identifiers.
575
576 /// Record code for pending implicit instantiations.
578
579 // ID 27 used to be for a list of replacement decls.
580
581 /// Record code for an update to a decl context's lookup table.
582 ///
583 /// In practice, this should only be used for the TU and namespaces.
585
586 /// Record for offsets of DECL_UPDATES records for declarations
587 /// that were modified after being deserialized and need updates.
589
590 // ID 30 used to be a decl update record. These are now in the DECLTYPES
591 // block.
592
593 // ID 31 used to be a list of offsets to DECL_CXX_BASE_SPECIFIERS records.
594
595 // ID 32 used to be the code for \#pragma diagnostic mappings.
596
597 /// Record code for special CUDA declarations.
599
600 /// Record code for header search information.
602
603 /// Record code for floating point \#pragma options.
605
606 /// Record code for enabled OpenCL extensions.
608
609 /// The list of delegating constructor declarations.
611
612 /// Record code for the set of known namespaces, which are used
613 /// for typo correction.
615
616 /// Record code for the remapping information used to relate
617 /// loaded modules to the various offsets and IDs(e.g., source location
618 /// offests, declaration and type IDs) that are used in that module to
619 /// refer to other modules.
621
622 /// Record code for the source manager line table information,
623 /// which stores information about \#line directives.
625
626 /// Record code for map of Objective-C class definition IDs to the
627 /// ObjC categories in a module that are attached to that class.
629
630 /// Record code for a file sorted array of DeclIDs in a module.
632
633 /// Record code for an array of all of the (sub)modules that were
634 /// imported by the AST file.
636
637 // ID 44 used to be a table of merged canonical declarations.
638 // ID 45 used to be a list of declaration IDs of local redeclarations.
639
640 /// Record code for the array of Objective-C categories (including
641 /// extensions).
642 ///
643 /// This array can only be interpreted properly using the Objective-C
644 /// categories map.
646
647 /// Record code for the table of offsets of each macro ID.
648 ///
649 /// The offset table contains offsets into the blob stored in
650 /// the preprocessor block. Each offset points to the corresponding
651 /// macro definition.
653
654 /// A list of "interesting" identifiers. Only used in C++ (where we
655 /// don't normally do lookups into the serialized identifier table). These
656 /// are eagerly deserialized.
658
659 /// Record code for undefined but used functions and variables that
660 /// need a definition in this TU.
662
663 /// Record code for late parsed template functions.
665
666 /// Record code for \#pragma optimize options.
668
669 /// Record code for potentially unused local typedef names.
671
672 // ID 53 used to be a table of constructor initializer records.
673
674 /// Delete expressions that will be analyzed later.
676
677 /// Record code for \#pragma ms_struct options.
679
680 /// Record code for \#pragma ms_struct options.
682
683 /// Number of unmatched #pragma clang cuda_force_host_device begin
684 /// directives we've seen.
686
687 /// Record code for types associated with OpenCL extensions.
689
690 /// Record code for declarations associated with OpenCL extensions.
692
694
695 /// Record code for \#pragma align/pack options.
697
698 /// The stack of open #ifs/#ifdefs recorded in a preamble.
700
701 /// A table of skipped ranges within the preprocessing record.
703
704 /// Record code for the Decls to be checked for deferred diags.
706
707 /// Record code for \#pragma float_control options.
709
710 /// ID 66 used to be the list of included files.
711
712 /// Record code for an unterminated \#pragma clang assume_nonnull begin
713 /// recorded in a preamble.
715
716 /// Record code for lexical and visible block for delayed namespace in
717 /// reduced BMI.
719
720 /// Record code for \#pragma clang unsafe_buffer_usage begin/end
722
723 /// Record code for vtables to emit.
725
726 /// Record code for related declarations that have to be deserialized together
727 /// from the same module.
729
730 /// Record code for Sema's vector of functions/blocks with effects to
731 /// be verified.
733
734 /// Record code for updated specialization
736
738
740
742
744
745 /// Record code for #pragma clang riscv intrinsic vector.
747
748 /// Record code for extname-redefined undeclared identifiers.
750
751 /// Record that encodes the number of submodules, their base ID in the AST
752 /// file, and for each module the relative bit offset into the stream.
754
755 /// Record code for the OpenMP 'requires' directives seen in the TU.
757};
758
759/// Record types used within a source manager block.
761 /// Describes a source location entry (SLocEntry) for a
762 /// file.
764
765 /// Describes a source location entry (SLocEntry) for a
766 /// buffer.
768
769 /// Describes a blob that contains the data for a buffer
770 /// entry. This kind of record always directly follows a
771 /// SM_SLOC_BUFFER_ENTRY record or a SM_SLOC_FILE_ENTRY with an
772 /// overridden buffer.
774
775 /// Describes a zlib-compressed blob that contains the data for
776 /// a buffer entry.
778
779 /// Describes a source location entry (SLocEntry) for a
780 /// macro expansion.
782};
783
784/// Record types used within a preprocessor block.
786 // The macros in the PP section are a PP_MACRO_* instance followed by a
787 // list of PP_TOKEN instances for each token in the definition.
788
789 /// An object-like macro definition.
790 /// [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed]
792
793 /// A function-like macro definition.
794 /// [PP_MACRO_FUNCTION_LIKE, <ObjectLikeStuff>, IsC99Varargs,
795 /// IsGNUVarars, NumArgs, ArgIdentInfoID* ]
797
798 /// Describes one token.
799 /// [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags]
801
802 /// The macro directives history for a particular identifier.
804
805 /// A macro directive exported by a module.
806 /// [PP_MODULE_MACRO, SubmoduleID, MacroID, (Overridden SubmoduleID)*]
808};
809
810/// Record types used within a preprocessor detail block.
812 /// Describes a macro expansion within the preprocessing record.
814
815 /// Describes a macro definition within the preprocessing record.
817
818 /// Describes an inclusion directive within the preprocessing
819 /// record.
821};
822
823/// Record types used within a submodule description block.
825 /// Defines the end of a single submodule. Sentinel record without any data.
827
828 /// Defines the major attributes of a submodule, including its
829 /// name and parent.
831
832 /// Specifies the umbrella header used to create this module,
833 /// if any.
835
836 /// Specifies a header that falls into this (sub)module.
838
839 /// Specifies a top-level header that falls into this (sub)module.
841
842 /// Specifies an umbrella directory.
844
845 /// Specifies the submodules that are imported by this
846 /// submodule.
848
849 /// Specifies the submodules that are re-exported from this
850 /// submodule.
852
853 /// Specifies a required feature.
855
856 /// Specifies a header that has been explicitly excluded
857 /// from this submodule.
859
860 /// Specifies a library or framework to link against.
862
863 /// Specifies a configuration macro for this module.
865
866 /// Specifies a conflict with another module.
868
869 /// Specifies a header that is private to this submodule.
871
872 /// Specifies a header that is part of the module but must be
873 /// textually included.
875
876 /// Specifies a header that is private to this submodule but
877 /// must be textually included.
879
880 /// Specifies some declarations with initializers that must be
881 /// emitted to initialize the module.
883
884 /// Specifies the name of the module that will eventually
885 /// re-export the entities in this module.
887
888 /// Specifies affecting modules that were not imported.
890
891 /// Specifies a direct submodule by name and ID, enabling on-demand
892 /// deserialization of children without loading the entire submodule block.
894};
895
896/// Record types used within a comments block.
898
899/// \defgroup ASTAST AST file AST constants
900///
901/// The constants in this group describe various components of the
902/// abstract syntax tree within an AST file.
903///
904/// @{
905
906/// Predefined type IDs.
907///
908/// These type IDs correspond to predefined types in the AST
909/// context, such as built-in types (int) and special place-holder
910/// types (the <overload> and <dependent> type markers). Such
911/// types are never actually serialized, since they will be built
912/// by the AST context when it is created.
914 /// The NULL type.
916
917 /// The void type.
919
920 /// The 'bool' or '_Bool' type.
922
923 /// The 'char' type, when it is unsigned.
925
926 /// The 'unsigned char' type.
928
929 /// The 'unsigned short' type.
931
932 /// The 'unsigned int' type.
934
935 /// The 'unsigned long' type.
937
938 /// The 'unsigned long long' type.
940
941 /// The 'char' type, when it is signed.
943
944 /// The 'signed char' type.
946
947 /// The C++ 'wchar_t' type.
949
950 /// The (signed) 'short' type.
952
953 /// The (signed) 'int' type.
955
956 /// The (signed) 'long' type.
958
959 /// The (signed) 'long long' type.
961
962 /// The 'float' type.
964
965 /// The 'double' type.
967
968 /// The 'long double' type.
970
971 /// The placeholder type for overloaded function sets.
973
974 /// The placeholder type for dependent types.
976
977 /// The '__uint128_t' type.
979
980 /// The '__int128_t' type.
982
983 /// The type of 'nullptr'.
985
986 /// The C++ 'char16_t' type.
988
989 /// The C++ 'char32_t' type.
991
992 /// The ObjC 'id' type.
994
995 /// The ObjC 'Class' type.
997
998 /// The ObjC 'SEL' type.
1000
1001 /// The 'unknown any' placeholder type.
1003
1004 /// The placeholder type for bound member functions.
1006
1007 /// The "auto" deduction type.
1009
1010 /// The "auto &&" deduction type.
1012
1013 /// The OpenCL 'half' / ARM NEON __fp16 type.
1015
1016 /// ARC's unbridged-cast placeholder type.
1018
1019 /// The pseudo-object placeholder type.
1021
1022 /// The placeholder type for builtin functions.
1024
1025 /// OpenCL event type.
1027
1028 /// OpenCL clk event type.
1030
1031 /// OpenCL sampler type.
1033
1034 /// OpenCL queue type.
1036
1037 /// OpenCL reserve_id type.
1039
1040 /// The placeholder type for an array section.
1042
1043 /// The '__float128' type
1045
1046 /// The '_Float16' type
1048
1049 /// The C++ 'char8_t' type.
1051
1052 /// \brief The 'short _Accum' type
1054
1055 /// \brief The '_Accum' type
1057
1058 /// \brief The 'long _Accum' type
1060
1061 /// \brief The 'unsigned short _Accum' type
1063
1064 /// \brief The 'unsigned _Accum' type
1066
1067 /// \brief The 'unsigned long _Accum' type
1069
1070 /// \brief The 'short _Fract' type
1072
1073 /// \brief The '_Fract' type
1075
1076 /// \brief The 'long _Fract' type
1078
1079 /// \brief The 'unsigned short _Fract' type
1081
1082 /// \brief The 'unsigned _Fract' type
1084
1085 /// \brief The 'unsigned long _Fract' type
1087
1088 /// \brief The '_Sat short _Accum' type
1090
1091 /// \brief The '_Sat _Accum' type
1093
1094 /// \brief The '_Sat long _Accum' type
1096
1097 /// \brief The '_Sat unsigned short _Accum' type
1099
1100 /// \brief The '_Sat unsigned _Accum' type
1102
1103 /// \brief The '_Sat unsigned long _Accum' type
1105
1106 /// \brief The '_Sat short _Fract' type
1108
1109 /// \brief The '_Sat _Fract' type
1111
1112 /// \brief The '_Sat long _Fract' type
1114
1115 /// \brief The '_Sat unsigned short _Fract' type
1117
1118 /// \brief The '_Sat unsigned _Fract' type
1120
1121 /// \brief The '_Sat unsigned long _Fract' type
1123
1124 /// The placeholder type for OpenMP array shaping operation.
1126
1127 /// The placeholder type for OpenMP iterator expression.
1129
1130 /// A placeholder type for incomplete matrix index operations.
1132
1133 /// \brief The '__bf16' type
1135
1136 /// \brief The '__ibm128' type
1138
1139/// OpenCL image types with auto numeration
1140#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
1141 PREDEF_TYPE_##Id##_ID,
1142#include "clang/Basic/OpenCLImageTypes.def"
1143/// \brief OpenCL extension types with auto numeration
1144#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) PREDEF_TYPE_##Id##_ID,
1145#include "clang/Basic/OpenCLExtensionTypes.def"
1146// \brief SVE types with auto numeration
1147#define SVE_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1148#include "clang/Basic/AArch64ACLETypes.def"
1149// \brief PowerPC MMA types with auto numeration
1150#define PPC_VECTOR_TYPE(Name, Id, Size) PREDEF_TYPE_##Id##_ID,
1151#include "clang/Basic/PPCTypes.def"
1152// \brief RISC-V V types with auto numeration
1153#define RVV_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1154#include "clang/Basic/RISCVVTypes.def"
1155// \brief WebAssembly reference types with auto numeration
1156#define WASM_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1157#include "clang/Basic/WebAssemblyReferenceTypes.def"
1158// \brief AMDGPU types with auto numeration
1159#define AMDGPU_TYPE(Name, Id, SingletonId, Width, Align) PREDEF_TYPE_##Id##_ID,
1160#include "clang/Basic/AMDGPUTypes.def"
1161// \brief HLSL intangible types with auto numeration
1162#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1163#include "clang/Basic/HLSLIntangibleTypes.def"
1164// \brief HLSL packed types with auto numeration
1165#define HLSL_PACKED_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1166#include "clang/Basic/HLSLPackedTypes.def"
1167// \brief SPIR-V types with auto numeration
1168#define SPIRV_TYPE(Name, Id, SingletonId) PREDEF_TYPE_##Id##_ID,
1169#include "clang/Basic/SPIRVTypes.def"
1170
1171 /// C++26 std::meta::info type.
1173
1174 /// The placeholder type for unresolved templates.
1176 // Sentinel value. Considered a predefined type but not useable as one.
1178};
1179
1180/// The number of predefined type IDs that are reserved for
1181/// the PREDEF_TYPE_* constants.
1182///
1183/// Type IDs for non-predefined types will start at
1184/// NUM_PREDEF_TYPE_IDs.
1185const unsigned NUM_PREDEF_TYPE_IDS = 533;
1186
1187// Ensure we do not overrun the predefined types we reserved
1188// in the enum PredefinedTypeIDs above.
1190 "Too many enumerators in PredefinedTypeIDs. Review the value of "
1191 "NUM_PREDEF_TYPE_IDS");
1192
1193/// Record codes for each kind of type.
1194///
1195/// These constants describe the type records that can occur within a
1196/// block identified by DECLTYPES_BLOCK_ID in the AST file. Each
1197/// constant describes a record for a specific type class in the
1198/// AST. Note that DeclCode values share this code space.
1200#define TYPE_BIT_CODE(CLASS_ID, CODE_ID, CODE_VALUE) \
1201 TYPE_##CODE_ID = CODE_VALUE,
1202#include "clang/Serialization/TypeBitCodes.def"
1203
1204 /// An ExtQualType record.
1206};
1207
1208/// The type IDs for special types constructed by semantic
1209/// analysis.
1210///
1211/// The constants in this enumeration are indices into the
1212/// SPECIAL_TYPES record.
1214 /// CFConstantString type
1216
1217 /// C FILE typedef type
1219
1220 /// C jmp_buf typedef type
1222
1223 /// C sigjmp_buf typedef type
1225
1226 /// Objective-C "id" redefinition type
1228
1229 /// Objective-C "Class" redefinition type
1231
1232 /// Objective-C "SEL" redefinition type
1234
1235 /// C ucontext_t typedef type
1237};
1238
1239/// The number of special type IDs.
1240const unsigned NumSpecialTypeIDs = 8;
1241
1242/// Record of updates for a declaration that was modified after
1243/// being deserialized. This can occur within DECLTYPES_BLOCK_ID.
1244const unsigned int DECL_UPDATES = 49;
1245
1246/// Record code for a list of local redeclarations of a declaration.
1247/// This can occur within DECLTYPES_BLOCK_ID.
1248const unsigned int LOCAL_REDECLARATIONS = 50;
1249
1250/// Record codes for each kind of declaration.
1251///
1252/// These constants describe the declaration records that can occur within
1253/// a declarations block (identified by DECLTYPES_BLOCK_ID). Each
1254/// constant describes a record for a specific declaration class
1255/// in the AST. Note that TypeCode values share this code space.
1257 /// A TypedefDecl record.
1259 /// A TypeAliasDecl record.
1260
1262
1263 /// An EnumDecl record.
1265
1266 /// A RecordDecl record.
1268
1269 /// An EnumConstantDecl record.
1271
1272 /// A FunctionDecl record.
1274
1275 /// A ObjCMethodDecl record.
1277
1278 /// A ObjCInterfaceDecl record.
1280
1281 /// A ObjCProtocolDecl record.
1283
1284 /// A ObjCIvarDecl record.
1286
1287 /// A ObjCAtDefsFieldDecl record.
1289
1290 /// A ObjCCategoryDecl record.
1292
1293 /// A ObjCCategoryImplDecl record.
1295
1296 /// A ObjCImplementationDecl record.
1298
1299 /// A ObjCCompatibleAliasDecl record.
1301
1302 /// A ObjCPropertyDecl record.
1304
1305 /// A ObjCPropertyImplDecl record.
1307
1308 /// A FieldDecl record.
1310
1311 /// A MSPropertyDecl record.
1313
1314 /// A MSGuidDecl record.
1316
1317 /// A TemplateParamObjectDecl record.
1319
1320 /// A VarDecl record.
1322
1323 /// An ImplicitParamDecl record.
1325
1326 /// A ParmVarDecl record.
1328
1329 /// A DecompositionDecl record.
1331
1332 /// A BindingDecl record.
1334
1335 /// A FileScopeAsmDecl record.
1337
1338 /// A TopLevelStmtDecl record.
1340
1341 /// A BlockDecl record.
1343
1344 /// A OutlinedFunctionDecl record.
1346
1347 /// A CapturedDecl record.
1349
1350 /// A record that stores the set of declarations that are
1351 /// lexically stored within a given DeclContext.
1352 ///
1353 /// The record itself is a blob that is an array of declaration IDs,
1354 /// in the order in which those declarations were added to the
1355 /// declaration context. This data is used when iterating over
1356 /// the contents of a DeclContext, e.g., via
1357 /// DeclContext::decls_begin() and DeclContext::decls_end().
1359
1360 /// A record that stores the set of declarations that are
1361 /// visible from a given DeclContext.
1362 ///
1363 /// The record itself stores a set of mappings, each of which
1364 /// associates a declaration name with one or more declaration
1365 /// IDs. This data is used when performing qualified name lookup
1366 /// into a DeclContext via DeclContext::lookup.
1368
1369 /// A record containing the set of declarations that are
1370 /// only visible from DeclContext in the same module.
1372
1373 /// A record that stores the set of declarations that are only visible
1374 /// to the TU.
1376
1377 /// A LabelDecl record.
1379
1380 /// A NamespaceDecl record.
1382
1383 /// A NamespaceAliasDecl record.
1385
1386 /// A UsingDecl record.
1388
1389 /// A UsingEnumDecl record.
1391
1392 /// A UsingPackDecl record.
1394
1395 /// A UsingShadowDecl record.
1397
1398 /// A ConstructorUsingShadowDecl record.
1400
1401 /// A UsingDirecitveDecl record.
1403
1404 /// An UnresolvedUsingValueDecl record.
1406
1407 /// An UnresolvedUsingTypenameDecl record.
1409
1410 /// A LinkageSpecDecl record.
1412
1413 /// An ExportDecl record.
1415
1416 /// A CXXRecordDecl record.
1418
1419 /// A CXXDeductionGuideDecl record.
1421
1422 /// A CXXMethodDecl record.
1424
1425 /// A CXXConstructorDecl record.
1427
1428 /// A CXXDestructorDecl record.
1430
1431 /// A CXXConversionDecl record.
1433
1434 /// An AccessSpecDecl record.
1436
1437 /// A FriendDecl record.
1439
1440 /// A FriendTemplateDecl record.
1442
1443 /// A ClassTemplateDecl record.
1445
1446 /// A ClassTemplateSpecializationDecl record.
1448
1449 /// A ClassTemplatePartialSpecializationDecl record.
1451
1452 /// A VarTemplateDecl record.
1454
1455 /// A VarTemplateSpecializationDecl record.
1457
1458 /// A VarTemplatePartialSpecializationDecl record.
1460
1461 /// A FunctionTemplateDecl record.
1463
1464 /// A TemplateTypeParmDecl record.
1466
1467 /// A NonTypeTemplateParmDecl record.
1469
1470 /// A TemplateTemplateParmDecl record.
1472
1473 /// A TypeAliasTemplateDecl record.
1475
1476 /// \brief A ConceptDecl record.
1478
1479 /// An UnresolvedUsingIfExistsDecl record.
1481
1482 /// \brief A StaticAssertDecl record.
1484
1485 /// A C++ expansion statement.
1487
1488 /// A record containing CXXBaseSpecifiers.
1490
1491 /// A record containing CXXCtorInitializers.
1493
1494 /// A IndirectFieldDecl record.
1496
1497 /// A NonTypeTemplateParmDecl record that stores an expanded
1498 /// non-type template parameter pack.
1500
1501 /// A TemplateTemplateParmDecl record that stores an expanded
1502 /// template template parameter pack.
1504
1505 /// An ImportDecl recording a module import.
1507
1508 /// An OMPThreadPrivateDecl record.
1510
1511 /// An OMPRequiresDecl record.
1513
1514 /// An OMPAllocateDcl record.
1516
1517 /// An EmptyDecl record.
1519
1520 /// An LifetimeExtendedTemporaryDecl record.
1522
1523 /// A RequiresExprBodyDecl record.
1525
1526 /// An ObjCTypeParamDecl record.
1528
1529 /// An OMPCapturedExprDecl record.
1531
1532 /// A PragmaCommentDecl record.
1534
1535 /// A PragmaDetectMismatchDecl record.
1537
1538 /// An OMPDeclareMapperDecl record.
1540
1541 /// An OMPDeclareReductionDecl record.
1543
1544 /// A UnnamedGlobalConstantDecl record.
1546
1547 /// A HLSLBufferDecl record.
1549
1550 /// An ImplicitConceptSpecializationDecl record.
1552
1553 // A decls specialization record.
1555
1556 // A decls specialization record.
1558
1559 // An OpenACCDeclareDecl record.
1561
1562 // An OpenACCRoutineDecl record.
1564
1565 /// An ExplicitInstantiationDecl record.
1567
1569};
1570
1571/// Record codes for each kind of statement or expression.
1572///
1573/// These constants describe the records that describe statements
1574/// or expressions. These records occur within type and declarations
1575/// block, so they begin with record values of 128. Each constant
1576/// describes a record for a specific statement or expression class in the
1577/// AST.
1579 /// A marker record that indicates that we are at the end
1580 /// of an expression.
1582
1583 /// A NULL expression.
1585
1586 /// A reference to a previously [de]serialized Stmt record.
1588
1589 /// A NullStmt record.
1591
1592 /// A CompoundStmt record.
1594
1595 /// A CaseStmt record.
1597
1598 /// A DefaultStmt record.
1600
1601 /// A LabelStmt record.
1603
1604 /// An AttributedStmt record.
1606
1607 /// An IfStmt record.
1609
1610 /// A SwitchStmt record.
1612
1613 /// A WhileStmt record.
1615
1616 /// A DoStmt record.
1618
1619 /// A ForStmt record.
1621
1622 /// A GotoStmt record.
1624
1625 /// An IndirectGotoStmt record.
1627
1628 /// A ContinueStmt record.
1630
1631 /// A BreakStmt record.
1633
1634 /// A ReturnStmt record.
1636
1637 /// A DeclStmt record.
1639
1640 /// A CapturedStmt record.
1642
1643 /// A SYCLKernelCallStmt record.
1645
1646 /// An UnresolvedSYCLKernelCallStmt record.
1648
1649 /// A GCC-style AsmStmt record.
1651
1652 /// A MS-style AsmStmt record.
1654
1655 /// A constant expression context.
1657
1658 /// A PredefinedExpr record.
1660
1661 /// A DeclRefExpr record.
1663
1664 /// An IntegerLiteral record.
1666
1667 /// A FloatingLiteral record.
1669
1670 /// An ImaginaryLiteral record.
1672
1673 /// A StringLiteral record.
1675
1676 /// A CharacterLiteral record.
1678
1679 /// A ParenExpr record.
1681
1682 /// A ParenListExpr record.
1684
1685 /// A UnaryOperator record.
1687
1688 /// An OffsetOfExpr record.
1690
1691 /// A SizefAlignOfExpr record.
1693
1694 /// An ArraySubscriptExpr record.
1696
1697 /// An MatrixSubscriptExpr record.
1699
1700 /// A CallExpr record.
1702
1703 /// A MemberExpr record.
1705
1706 /// A BinaryOperator record.
1708
1709 /// A CompoundAssignOperator record.
1711
1712 /// A ConditionOperator record.
1714
1715 /// An ImplicitCastExpr record.
1717
1718 /// A CStyleCastExpr record.
1720
1721 /// A CompoundLiteralExpr record.
1723
1724 /// An ExtVectorElementExpr record.
1726
1727 /// A MatrixElementExpr record.
1729
1730 /// An InitListExpr record.
1732
1733 /// A DesignatedInitExpr record.
1735
1736 /// A DesignatedInitUpdateExpr record.
1738
1739 /// An NoInitExpr record.
1741
1742 /// An ArrayInitLoopExpr record.
1744
1745 /// An ArrayInitIndexExpr record.
1747
1748 /// An ImplicitValueInitExpr record.
1750
1751 /// A VAArgExpr record.
1753
1754 /// An AddrLabelExpr record.
1756
1757 /// A StmtExpr record.
1759
1760 /// A ChooseExpr record.
1762
1763 /// A GNUNullExpr record.
1765
1766 /// A SourceLocExpr record.
1768
1769 /// A EmbedExpr record.
1771
1772 /// A ShuffleVectorExpr record.
1774
1775 /// A ConvertVectorExpr record.
1777
1778 /// BlockExpr
1780
1781 /// A GenericSelectionExpr record.
1783
1784 /// A PseudoObjectExpr record.
1786
1787 /// An AtomicExpr record.
1789
1790 /// A RecoveryExpr record.
1792
1793 // Objective-C
1794
1795 /// An ObjCStringLiteral record.
1797
1801
1802 /// An ObjCEncodeExpr record.
1804
1805 /// An ObjCSelectorExpr record.
1807
1808 /// An ObjCProtocolExpr record.
1810
1811 /// An ObjCIvarRefExpr record.
1813
1814 /// An ObjCPropertyRefExpr record.
1816
1817 /// An ObjCSubscriptRefExpr record.
1819
1820 /// UNUSED
1822
1823 /// An ObjCMessageExpr record.
1825
1826 /// An ObjCIsa Expr record.
1828
1829 /// An ObjCIndirectCopyRestoreExpr record.
1831
1832 /// An ObjCForCollectionStmt record.
1834
1835 /// An ObjCAtCatchStmt record.
1837
1838 /// An ObjCAtFinallyStmt record.
1840
1841 /// An ObjCAtTryStmt record.
1843
1844 /// An ObjCAtSynchronizedStmt record.
1846
1847 /// An ObjCAtThrowStmt record.
1849
1850 /// An ObjCAutoreleasePoolStmt record.
1852
1853 /// An ObjCBoolLiteralExpr record.
1855
1856 /// An ObjCAvailabilityCheckExpr record.
1858
1859 // C++
1860
1861 /// A CXXCatchStmt record.
1863
1864 /// A CXXTryStmt record.
1866 /// A CXXForRangeStmt record.
1867
1869
1870 /// A CXXExpansionPatternStmt.
1872
1873 /// A CXXExpansionInstantiationStmt.
1875
1876 /// A CXXOperatorCallExpr record.
1878
1879 /// A CXXMemberCallExpr record.
1881
1882 /// A CXXRewrittenBinaryOperator record.
1884
1885 /// A CXXConstructExpr record.
1887
1888 /// A CXXInheritedCtorInitExpr record.
1890
1891 /// A CXXTemporaryObjectExpr record.
1893
1894 /// A CXXStaticCastExpr record.
1896
1897 /// A CXXDynamicCastExpr record.
1899
1900 /// A CXXReinterpretCastExpr record.
1902
1903 /// A CXXConstCastExpr record.
1905
1906 /// A CXXAddrspaceCastExpr record.
1908
1909 /// A CXXFunctionalCastExpr record.
1911
1912 /// A BuiltinBitCastExpr record.
1914
1915 /// A UserDefinedLiteral record.
1917
1918 /// A CXXStdInitializerListExpr record.
1920
1921 /// A CXXBoolLiteralExpr record.
1923
1924 /// A CXXParenListInitExpr record.
1926
1927 EXPR_CXX_NULL_PTR_LITERAL, // CXXNullPtrLiteralExpr
1928 EXPR_CXX_TYPEID_EXPR, // CXXTypeidExpr (of expr).
1929 EXPR_CXX_TYPEID_TYPE, // CXXTypeidExpr (of type).
1930 EXPR_CXX_THIS, // CXXThisExpr
1931 EXPR_CXX_THROW, // CXXThrowExpr
1932 EXPR_CXX_DEFAULT_ARG, // CXXDefaultArgExpr
1933 EXPR_CXX_DEFAULT_INIT, // CXXDefaultInitExpr
1934 EXPR_CXX_BIND_TEMPORARY, // CXXBindTemporaryExpr
1935
1936 EXPR_CXX_SCALAR_VALUE_INIT, // CXXScalarValueInitExpr
1937 EXPR_CXX_NEW, // CXXNewExpr
1938 EXPR_CXX_DELETE, // CXXDeleteExpr
1939 EXPR_CXX_PSEUDO_DESTRUCTOR, // CXXPseudoDestructorExpr
1940
1941 EXPR_EXPR_WITH_CLEANUPS, // ExprWithCleanups
1942
1943 EXPR_CXX_DEPENDENT_SCOPE_MEMBER, // CXXDependentScopeMemberExpr
1944 EXPR_CXX_DEPENDENT_SCOPE_DECL_REF, // DependentScopeDeclRefExpr
1945 EXPR_DEPENDENT_TEMPLATE_ID, // DependentTemplateIdExpr
1946 EXPR_CXX_UNRESOLVED_CONSTRUCT, // CXXUnresolvedConstructExpr
1947 EXPR_CXX_UNRESOLVED_MEMBER, // UnresolvedMemberExpr
1948 EXPR_CXX_UNRESOLVED_LOOKUP, // UnresolvedLookupExpr
1949
1950 EXPR_CXX_EXPRESSION_TRAIT, // ExpressionTraitExpr
1951 EXPR_CXX_NOEXCEPT, // CXXNoexceptExpr
1952
1953 EXPR_OPAQUE_VALUE, // OpaqueValueExpr
1954 EXPR_BINARY_CONDITIONAL_OPERATOR, // BinaryConditionalOperator
1955 EXPR_TYPE_TRAIT, // TypeTraitExpr
1956 EXPR_ARRAY_TYPE_TRAIT, // ArrayTypeTraitIntExpr
1957
1958 EXPR_PACK_EXPANSION, // PackExpansionExpr
1959 EXPR_PACK_INDEXING, // PackIndexingExpr
1960 EXPR_SIZEOF_PACK, // SizeOfPackExpr
1961 EXPR_SUBST_NON_TYPE_TEMPLATE_PARM, // SubstNonTypeTemplateParmExpr
1962 EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK, // SubstNonTypeTemplateParmPackExpr
1963 EXPR_FUNCTION_PARM_PACK, // FunctionParmPackExpr
1964 EXPR_MATERIALIZE_TEMPORARY, // MaterializeTemporaryExpr
1965 EXPR_CXX_FOLD, // CXXFoldExpr
1966 EXPR_CONCEPT_SPECIALIZATION, // ConceptSpecializationExpr
1967 EXPR_REQUIRES, // RequiresExpr
1968 EXPR_CXX_EXPANSION_SELECT, // CXXExpansionSelectExpr
1969
1970 // Reflection
1972
1973 // CUDA
1974 EXPR_CUDA_KERNEL_CALL, // CUDAKernelCallExpr
1975
1976 // OpenCL
1977 EXPR_ASTYPE, // AsTypeExpr
1978
1979 // Microsoft
1980 EXPR_CXX_PROPERTY_REF_EXPR, // MSPropertyRefExpr
1981 EXPR_CXX_PROPERTY_SUBSCRIPT_EXPR, // MSPropertySubscriptExpr
1982 EXPR_CXX_UUIDOF_EXPR, // CXXUuidofExpr (of expr).
1983 EXPR_CXX_UUIDOF_TYPE, // CXXUuidofExpr (of type).
1984 STMT_SEH_LEAVE, // SEHLeaveStmt
1985 STMT_SEH_EXCEPT, // SEHExceptStmt
1986 STMT_SEH_FINALLY, // SEHFinallyStmt
1987 STMT_SEH_TRY, // SEHTryStmt
1988
1989 // OpenMP directives
2074
2075 // ARC
2076 EXPR_OBJC_BRIDGED_CAST, // ObjCBridgedCastExpr
2077
2078 STMT_MS_DEPENDENT_EXISTS, // MSDependentExistsStmt
2079 EXPR_LAMBDA, // LambdaExpr
2085
2086 // FixedPointLiteral
2088
2089 // SYCLUniqueStableNameExpr
2091
2092 // OpenACC Constructs/Exprs
2108
2109 // HLSL Constructs
2111
2113};
2114
2115/// The kinds of designators that can occur in a
2116/// DesignatedInitExpr.
2118 /// Field designator where only the field name is known.
2120
2121 /// Field designator where the field has been resolved to
2122 /// a declaration.
2124
2125 /// Array designator.
2127
2128 /// GNU array range designator.
2130};
2131
2132/// The different kinds of data that can occur in a
2133/// CtorInitializer.
2140
2141/// Kinds of friend payloads owned by FriendTemplateDecl.
2148
2149/// Kinds of cleanup objects owned by ExprWithCleanups.
2151
2152/// Describes the categories of an Objective-C class.
2154 // The ID of the definition. Use unaligned_decl_id_t to keep
2155 // ObjCCategoriesInfo 32-bit aligned.
2157
2158 // Offset into the array of category lists.
2159 unsigned Offset;
2160
2163 : DefinitionID(ID.getRawValue()), Offset(Offset) {}
2164
2166
2167 friend bool operator<(const ObjCCategoriesInfo &X,
2168 const ObjCCategoriesInfo &Y) {
2169 return X.getDefinitionID() < Y.getDefinitionID();
2170 }
2171
2172 friend bool operator>(const ObjCCategoriesInfo &X,
2173 const ObjCCategoriesInfo &Y) {
2174 return X.getDefinitionID() > Y.getDefinitionID();
2175 }
2176
2177 friend bool operator<=(const ObjCCategoriesInfo &X,
2178 const ObjCCategoriesInfo &Y) {
2179 return X.getDefinitionID() <= Y.getDefinitionID();
2180 }
2181
2182 friend bool operator>=(const ObjCCategoriesInfo &X,
2183 const ObjCCategoriesInfo &Y) {
2184 return X.getDefinitionID() >= Y.getDefinitionID();
2185 }
2186};
2187
2188static_assert(alignof(ObjCCategoriesInfo) <= 4);
2189static_assert(std::is_standard_layout_v<ObjCCategoriesInfo> &&
2190 std::is_trivial_v<ObjCCategoriesInfo>);
2191
2192/// A key used when looking up entities by \ref DeclarationName.
2193///
2194/// Different \ref DeclarationNames are mapped to different keys, but the
2195/// same key can occasionally represent multiple names (for names that
2196/// contain types, in particular).
2198 using NameKind = unsigned;
2199
2200 NameKind Kind = 0;
2201 uint64_t Data = 0;
2202
2203public:
2206 DeclarationNameKey(NameKind Kind, uint64_t Data) : Kind(Kind), Data(Data) {}
2207
2208 NameKind getKind() const { return Kind; }
2209
2211 assert(Kind == DeclarationName::Identifier ||
2214 return (IdentifierInfo *)Data;
2215 }
2216
2218 assert(Kind == DeclarationName::ObjCZeroArgSelector ||
2221 return Selector(Data);
2222 }
2223
2228
2229 /// Compute a fingerprint of this key for use in on-disk hash table.
2230 unsigned getHash() const;
2231
2232 friend bool operator==(const DeclarationNameKey &A,
2233 const DeclarationNameKey &B) {
2234 return A.Kind == B.Kind && A.Data == B.Data;
2235 }
2236};
2237
2238/// @}
2239
2240} // namespace serialization
2241} // namespace clang
2242
2243namespace llvm {
2244
2245template <> struct DenseMapInfo<clang::serialization::DeclarationNameKey> {
2246 static unsigned
2248 return Key.getHash();
2249 }
2250
2253 return L == R;
2254 }
2255};
2256
2257} // namespace llvm
2258
2259#endif // LLVM_CLANG_SERIALIZATION_ASTBITCODES_H
Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.
#define X(type, name)
Definition Value.h:97
Defines an enumeration for C++ overloaded operators.
Defines the clang::SourceLocation class and associated facilities.
C Language Family Type Representation.
uint64_t DeclID
An ID number that refers to a declaration in an AST file.
Definition DeclID.h:111
The name of a declaration.
One of these records is kept for each identifier that is lexed.
A (possibly-)qualified type.
Definition TypeBase.h:938
@ FastWidth
The width of the "fast" qualifier mask.
Definition TypeBase.h:377
Smart pointer class that efficiently represents Objective-C method names.
DeclOffset(RawLocEncoding RawLoc, uint64_t BitOffset, uint64_t DeclTypesBlockStartOffset)
RawLocEncoding getRawLoc() const
void setBitOffset(uint64_t Offset, const uint64_t DeclTypesBlockStartOffset)
uint64_t getBitOffset(const uint64_t DeclTypesBlockStartOffset) const
void setRawLoc(RawLocEncoding Loc)
A key used when looking up entities by DeclarationName.
unsigned getHash() const
Compute a fingerprint of this key for use in on-disk hash table.
friend bool operator==(const DeclarationNameKey &A, const DeclarationNameKey &B)
OverloadedOperatorKind getOperatorKind() const
DeclarationNameKey(NameKind Kind, uint64_t Data)
IdentifierInfo * getIdentifier() const
RawLocEncoding getBegin() const
PPEntityOffset(RawLocEncoding Begin, RawLocEncoding End, uint32_t BitOffset)
PPSkippedRange(RawLocEncoding Begin, RawLocEncoding End)
RawLocEncoding getBegin() const
uint32_t getModuleFileIndex() const
TypeIdx(uint32_t ModuleFileIdx, uint32_t Idx)
static TypeIdx fromTypeID(TypeID ID)
TypeID asTypeID(unsigned FastQuals) const
32 aligned uint64_t in the AST file.
PredefinedTypeIDs
Predefined type IDs.
CtorInitializerType
The different kinds of data that can occur in a CtorInitializer.
const unsigned int LOCAL_REDECLARATIONS
Record code for a list of local redeclarations of a declaration.
CleanupObjectKind
Kinds of cleanup objects owned by ExprWithCleanups.
const unsigned NUM_PREDEF_TYPE_IDS
The number of predefined type IDs that are reserved for the PREDEF_TYPE_* constants.
FriendTemplateDeclKind
Kinds of friend payloads owned by FriendTemplateDecl.
DeclCode
Record codes for each kind of declaration.
const unsigned NumSpecialTypeIDs
The number of special type IDs.
TypeCode
Record codes for each kind of type.
SpecialTypeIDs
The type IDs for special types constructed by semantic analysis.
StmtCode
Record codes for each kind of statement or expression.
DesignatorTypes
The kinds of designators that can occur in a DesignatedInitExpr.
const unsigned int DECL_UPDATES
Record of updates for a declaration that was modified after being deserialized.
@ PREDEF_TYPE_LONG_ACCUM_ID
The 'long _Accum' type.
@ PREDEF_TYPE_SAMPLER_ID
OpenCL sampler type.
@ PREDEF_TYPE_INT128_ID
The '__int128_t' type.
@ PREDEF_TYPE_CHAR32_ID
The C++ 'char32_t' type.
@ PREDEF_TYPE_SAT_SHORT_ACCUM_ID
The '_Sat short _Accum' type.
@ PREDEF_TYPE_IBM128_ID
The '__ibm128' type.
@ PREDEF_TYPE_SHORT_FRACT_ID
The 'short _Fract' type.
@ PREDEF_TYPE_AUTO_RREF_DEDUCT
The "auto &&" deduction type.
@ PREDEF_TYPE_BOUND_MEMBER
The placeholder type for bound member functions.
@ PREDEF_TYPE_LONGLONG_ID
The (signed) 'long long' type.
@ PREDEF_TYPE_FRACT_ID
The '_Fract' type.
@ PREDEF_TYPE_ARC_UNBRIDGED_CAST
ARC's unbridged-cast placeholder type.
@ PREDEF_TYPE_USHORT_FRACT_ID
The 'unsigned short _Fract' type.
@ PREDEF_TYPE_SAT_ULONG_FRACT_ID
The '_Sat unsigned long _Fract' type.
@ PREDEF_TYPE_BOOL_ID
The 'bool' or '_Bool' type.
@ PREDEF_TYPE_SAT_LONG_ACCUM_ID
The '_Sat long _Accum' type.
@ PREDEF_TYPE_SAT_LONG_FRACT_ID
The '_Sat long _Fract' type.
@ PREDEF_TYPE_SAT_SHORT_FRACT_ID
The '_Sat short _Fract' type.
@ PREDEF_TYPE_CHAR_U_ID
The 'char' type, when it is unsigned.
@ PREDEF_TYPE_RESERVE_ID_ID
OpenCL reserve_id type.
@ PREDEF_TYPE_SAT_ACCUM_ID
The '_Sat _Accum' type.
@ PREDEF_TYPE_BUILTIN_FN
The placeholder type for builtin functions.
@ PREDEF_TYPE_SHORT_ACCUM_ID
The 'short _Accum' type.
@ PREDEF_TYPE_FLOAT_ID
The 'float' type.
@ PREDEF_TYPE_QUEUE_ID
OpenCL queue type.
@ PREDEF_TYPE_INT_ID
The (signed) 'int' type.
@ PREDEF_TYPE_OBJC_SEL
The ObjC 'SEL' type.
@ PREDEF_TYPE_BFLOAT16_ID
The '__bf16' type.
@ PREDEF_TYPE_WCHAR_ID
The C++ 'wchar_t' type.
@ PREDEF_TYPE_UCHAR_ID
The 'unsigned char' type.
@ PREDEF_TYPE_UACCUM_ID
The 'unsigned _Accum' type.
@ PREDEF_TYPE_SCHAR_ID
The 'signed char' type.
@ PREDEF_TYPE_CHAR_S_ID
The 'char' type, when it is signed.
@ PREDEF_TYPE_NULLPTR_ID
The type of 'nullptr'.
@ PREDEF_TYPE_ULONG_FRACT_ID
The 'unsigned long _Fract' type.
@ PREDEF_TYPE_FLOAT16_ID
The '_Float16' type.
@ PREDEF_TYPE_UINT_ID
The 'unsigned int' type.
@ PREDEF_TYPE_FLOAT128_ID
The '__float128' type.
@ PREDEF_TYPE_OBJC_ID
The ObjC 'id' type.
@ PREDEF_TYPE_CHAR16_ID
The C++ 'char16_t' type.
@ PREDEF_TYPE_ARRAY_SECTION
The placeholder type for an array section.
@ PREDEF_TYPE_ULONGLONG_ID
The 'unsigned long long' type.
@ PREDEF_TYPE_SAT_UFRACT_ID
The '_Sat unsigned _Fract' type.
@ PREDEF_TYPE_USHORT_ID
The 'unsigned short' type.
@ PREDEF_TYPE_SHORT_ID
The (signed) 'short' type.
@ PREDEF_TYPE_OMP_ARRAY_SHAPING
The placeholder type for OpenMP array shaping operation.
@ PREDEF_TYPE_DEPENDENT_ID
The placeholder type for dependent types.
@ PREDEF_TYPE_LONGDOUBLE_ID
The 'long double' type.
@ PREDEF_TYPE_DOUBLE_ID
The 'double' type.
@ PREDEF_TYPE_UINT128_ID
The '__uint128_t' type.
@ PREDEF_TYPE_HALF_ID
The OpenCL 'half' / ARM NEON __fp16 type.
@ PREDEF_TYPE_VOID_ID
The void type.
@ PREDEF_TYPE_SAT_USHORT_FRACT_ID
The '_Sat unsigned short _Fract' type.
@ PREDEF_TYPE_META_INFO_ID
C++26 std::meta::info type.
@ PREDEF_TYPE_ACCUM_ID
The '_Accum' type.
@ PREDEF_TYPE_SAT_FRACT_ID
The '_Sat _Fract' type.
@ PREDEF_TYPE_NULL_ID
The NULL type.
@ PREDEF_TYPE_USHORT_ACCUM_ID
The 'unsigned short _Accum' type.
@ PREDEF_TYPE_CHAR8_ID
The C++ 'char8_t' type.
@ PREDEF_TYPE_UFRACT_ID
The 'unsigned _Fract' type.
@ PREDEF_TYPE_OVERLOAD_ID
The placeholder type for overloaded function sets.
@ PREDEF_TYPE_INCOMPLETE_MATRIX_IDX
A placeholder type for incomplete matrix index operations.
@ PREDEF_TYPE_UNRESOLVED_TEMPLATE
The placeholder type for unresolved templates.
@ PREDEF_TYPE_SAT_USHORT_ACCUM_ID
The '_Sat unsigned short _Accum' type.
@ PREDEF_TYPE_LONG_ID
The (signed) 'long' type.
@ PREDEF_TYPE_SAT_ULONG_ACCUM_ID
The '_Sat unsigned long _Accum' type.
@ PREDEF_TYPE_LONG_FRACT_ID
The 'long _Fract' type.
@ PREDEF_TYPE_UNKNOWN_ANY
The 'unknown any' placeholder type.
@ PREDEF_TYPE_OMP_ITERATOR
The placeholder type for OpenMP iterator expression.
@ PREDEF_TYPE_PSEUDO_OBJECT
The pseudo-object placeholder type.
@ PREDEF_TYPE_OBJC_CLASS
The ObjC 'Class' type.
@ PREDEF_TYPE_ULONG_ID
The 'unsigned long' type.
@ PREDEF_TYPE_SAT_UACCUM_ID
The '_Sat unsigned _Accum' type.
@ PREDEF_TYPE_CLK_EVENT_ID
OpenCL clk event type.
@ PREDEF_TYPE_EVENT_ID
OpenCL event type.
@ PREDEF_TYPE_ULONG_ACCUM_ID
The 'unsigned long _Accum' type.
@ PREDEF_TYPE_AUTO_DEDUCT
The "auto" deduction type.
@ DECL_EMPTY
An EmptyDecl record.
@ DECL_CAPTURED
A CapturedDecl record.
@ DECL_CXX_BASE_SPECIFIERS
A record containing CXXBaseSpecifiers.
@ DECL_CXX_RECORD
A CXXRecordDecl record.
@ DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION
A VarTemplatePartialSpecializationDecl record.
@ DECL_OMP_ALLOCATE
An OMPAllocateDcl record.
@ DECL_MS_PROPERTY
A MSPropertyDecl record.
@ DECL_OMP_DECLARE_MAPPER
An OMPDeclareMapperDecl record.
@ DECL_TOP_LEVEL_STMT_DECL
A TopLevelStmtDecl record.
@ DECL_REQUIRES_EXPR_BODY
A RequiresExprBodyDecl record.
@ DECL_STATIC_ASSERT
A StaticAssertDecl record.
@ DECL_INDIRECTFIELD
A IndirectFieldDecl record.
@ DECL_TEMPLATE_TEMPLATE_PARM
A TemplateTemplateParmDecl record.
@ DECL_IMPORT
An ImportDecl recording a module import.
@ DECL_UNNAMED_GLOBAL_CONSTANT
A UnnamedGlobalConstantDecl record.
@ DECL_ACCESS_SPEC
An AccessSpecDecl record.
@ DECL_OBJC_TYPE_PARAM
An ObjCTypeParamDecl record.
@ DECL_OBJC_CATEGORY_IMPL
A ObjCCategoryImplDecl record.
@ DECL_ENUM_CONSTANT
An EnumConstantDecl record.
@ DECL_PARM_VAR
A ParmVarDecl record.
@ DECL_TYPEDEF
A TypedefDecl record.
@ DECL_EXPANDED_TEMPLATE_TEMPLATE_PARM_PACK
A TemplateTemplateParmDecl record that stores an expanded template template parameter pack.
@ DECL_HLSL_BUFFER
A HLSLBufferDecl record.
@ DECL_NAMESPACE_ALIAS
A NamespaceAliasDecl record.
@ DECL_TYPEALIAS
A TypeAliasDecl record.
@ DECL_FUNCTION_TEMPLATE
A FunctionTemplateDecl record.
@ DECL_MS_GUID
A MSGuidDecl record.
@ DECL_UNRESOLVED_USING_TYPENAME
An UnresolvedUsingTypenameDecl record.
@ DECL_CLASS_TEMPLATE_SPECIALIZATION
A ClassTemplateSpecializationDecl record.
@ DECL_EXPANSION_STMT
A C++ expansion statement.
@ DECL_FILE_SCOPE_ASM
A FileScopeAsmDecl record.
@ DECL_CXX_CONSTRUCTOR
A CXXConstructorDecl record.
@ DECL_CXX_CONVERSION
A CXXConversionDecl record.
@ DECL_FIELD
A FieldDecl record.
@ DECL_LINKAGE_SPEC
A LinkageSpecDecl record.
@ DECL_CONTEXT_TU_LOCAL_VISIBLE
A record that stores the set of declarations that are only visible to the TU.
@ DECL_NAMESPACE
A NamespaceDecl record.
@ DECL_NON_TYPE_TEMPLATE_PARM
A NonTypeTemplateParmDecl record.
@ DECL_USING_PACK
A UsingPackDecl record.
@ DECL_FUNCTION
A FunctionDecl record.
@ DECL_USING_DIRECTIVE
A UsingDirecitveDecl record.
@ DECL_RECORD
A RecordDecl record.
@ DECL_CONTEXT_LEXICAL
A record that stores the set of declarations that are lexically stored within a given DeclContext.
@ DECL_OUTLINEDFUNCTION
A OutlinedFunctionDecl record.
@ DECL_BLOCK
A BlockDecl record.
@ DECL_UNRESOLVED_USING_VALUE
An UnresolvedUsingValueDecl record.
@ DECL_TYPE_ALIAS_TEMPLATE
A TypeAliasTemplateDecl record.
@ DECL_CXX_CTOR_INITIALIZERS
A record containing CXXCtorInitializers.
@ DECL_OBJC_CATEGORY
A ObjCCategoryDecl record.
@ DECL_VAR
A VarDecl record.
@ DECL_UNRESOLVED_USING_IF_EXISTS
An UnresolvedUsingIfExistsDecl record.
@ DECL_USING
A UsingDecl record.
@ DECL_OBJC_PROTOCOL
A ObjCProtocolDecl record.
@ DECL_TEMPLATE_TYPE_PARM
A TemplateTypeParmDecl record.
@ DECL_VAR_TEMPLATE_SPECIALIZATION
A VarTemplateSpecializationDecl record.
@ DECL_OBJC_IMPLEMENTATION
A ObjCImplementationDecl record.
@ DECL_LABEL
A LabelDecl record.
@ DECL_OBJC_COMPATIBLE_ALIAS
A ObjCCompatibleAliasDecl record.
@ DECL_CONSTRUCTOR_USING_SHADOW
A ConstructorUsingShadowDecl record.
@ DECL_USING_ENUM
A UsingEnumDecl record.
@ DECL_FRIEND_TEMPLATE
A FriendTemplateDecl record.
@ DECL_PRAGMA_DETECT_MISMATCH
A PragmaDetectMismatchDecl record.
@ DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK
A NonTypeTemplateParmDecl record that stores an expanded non-type template parameter pack.
@ DECL_OBJC_AT_DEFS_FIELD
A ObjCAtDefsFieldDecl record.
@ DECL_IMPLICIT_PARAM
An ImplicitParamDecl record.
@ DECL_FRIEND
A FriendDecl record.
@ DECL_CXX_METHOD
A CXXMethodDecl record.
@ DECL_EXPORT
An ExportDecl record.
@ DECL_BINDING
A BindingDecl record.
@ DECL_PRAGMA_COMMENT
A PragmaCommentDecl record.
@ DECL_ENUM
An EnumDecl record.
@ DECL_CONTEXT_MODULE_LOCAL_VISIBLE
A record containing the set of declarations that are only visible from DeclContext in the same module...
@ DECL_DECOMPOSITION
A DecompositionDecl record.
@ DECL_OMP_DECLARE_REDUCTION
An OMPDeclareReductionDecl record.
@ DECL_OMP_THREADPRIVATE
An OMPThreadPrivateDecl record.
@ DECL_OBJC_METHOD
A ObjCMethodDecl record.
@ DECL_CXX_DESTRUCTOR
A CXXDestructorDecl record.
@ DECL_EXPLICIT_INSTANTIATION
An ExplicitInstantiationDecl record.
@ DECL_OMP_CAPTUREDEXPR
An OMPCapturedExprDecl record.
@ DECL_CLASS_TEMPLATE
A ClassTemplateDecl record.
@ DECL_USING_SHADOW
A UsingShadowDecl record.
@ DECL_CONCEPT
A ConceptDecl record.
@ DECL_CXX_DEDUCTION_GUIDE
A CXXDeductionGuideDecl record.
@ DECL_OMP_REQUIRES
An OMPRequiresDecl record.
@ DECL_OBJC_IVAR
A ObjCIvarDecl record.
@ DECL_OBJC_PROPERTY
A ObjCPropertyDecl record.
@ DECL_TEMPLATE_PARAM_OBJECT
A TemplateParamObjectDecl record.
@ DECL_OBJC_INTERFACE
A ObjCInterfaceDecl record.
@ DECL_VAR_TEMPLATE
A VarTemplateDecl record.
@ DECL_LIFETIME_EXTENDED_TEMPORARY
An LifetimeExtendedTemporaryDecl record.
@ DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION
A ClassTemplatePartialSpecializationDecl record.
@ DECL_IMPLICIT_CONCEPT_SPECIALIZATION
An ImplicitConceptSpecializationDecl record.
@ DECL_CONTEXT_VISIBLE
A record that stores the set of declarations that are visible from a given DeclContext.
@ DECL_OBJC_PROPERTY_IMPL
A ObjCPropertyImplDecl record.
@ TYPE_EXT_QUAL
An ExtQualType record.
@ SPECIAL_TYPE_OBJC_SEL_REDEFINITION
Objective-C "SEL" redefinition type.
@ SPECIAL_TYPE_UCONTEXT_T
C ucontext_t typedef type.
@ SPECIAL_TYPE_JMP_BUF
C jmp_buf typedef type.
@ SPECIAL_TYPE_FILE
C FILE typedef type.
@ SPECIAL_TYPE_SIGJMP_BUF
C sigjmp_buf typedef type.
@ SPECIAL_TYPE_OBJC_CLASS_REDEFINITION
Objective-C "Class" redefinition type.
@ SPECIAL_TYPE_CF_CONSTANT_STRING
CFConstantString type.
@ SPECIAL_TYPE_OBJC_ID_REDEFINITION
Objective-C "id" redefinition type.
@ EXPR_DESIGNATED_INIT
A DesignatedInitExpr record.
@ EXPR_COMPOUND_LITERAL
A CompoundLiteralExpr record.
@ STMT_OMP_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE
@ EXPR_OBJC_IVAR_REF_EXPR
An ObjCIvarRefExpr record.
@ EXPR_MEMBER
A MemberExpr record.
@ EXPR_CXX_TEMPORARY_OBJECT
A CXXTemporaryObjectExpr record.
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE
@ EXPR_COMPOUND_ASSIGN_OPERATOR
A CompoundAssignOperator record.
@ EXPR_CXX_STATIC_CAST
A CXXStaticCastExpr record.
@ EXPR_OBJC_STRING_LITERAL
An ObjCStringLiteral record.
@ EXPR_VA_ARG
A VAArgExpr record.
@ EXPR_OBJC_ISA
An ObjCIsa Expr record.
@ EXPR_CXX_OPERATOR_CALL
A CXXOperatorCallExpr record.
@ STMT_OBJC_AT_TRY
An ObjCAtTryStmt record.
@ STMT_DO
A DoStmt record.
@ STMT_OBJC_CATCH
An ObjCAtCatchStmt record.
@ STMT_IF
An IfStmt record.
@ EXPR_STRING_LITERAL
A StringLiteral record.
@ EXPR_OBJC_AVAILABILITY_CHECK
An ObjCAvailabilityCheckExpr record.
@ STMT_OMP_PARALLEL_MASKED_TASKLOOP_DIRECTIVE
@ EXPR_MATRIX_SUBSCRIPT
An MatrixSubscriptExpr record.
@ EXPR_PSEUDO_OBJECT
A PseudoObjectExpr record.
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE
@ EXPR_IMPLICIT_CAST
An ImplicitCastExpr record.
@ STMT_CAPTURED
A CapturedStmt record.
@ STMT_OMP_TARGET_PARALLEL_FOR_SIMD_DIRECTIVE
@ STMT_GCCASM
A GCC-style AsmStmt record.
@ EXPR_IMAGINARY_LITERAL
An ImaginaryLiteral record.
@ STMT_WHILE
A WhileStmt record.
@ EXPR_CONVERT_VECTOR
A ConvertVectorExpr record.
@ EXPR_OBJC_SUBSCRIPT_REF_EXPR
An ObjCSubscriptRefExpr record.
@ EXPR_STMT
A StmtExpr record.
@ EXPR_CXX_REINTERPRET_CAST
A CXXReinterpretCastExpr record.
@ EXPR_DESIGNATED_INIT_UPDATE
A DesignatedInitUpdateExpr record.
@ STMT_OBJC_AT_SYNCHRONIZED
An ObjCAtSynchronizedStmt record.
@ STMT_OMP_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE
@ EXPR_BUILTIN_BIT_CAST
A BuiltinBitCastExpr record.
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD_DIRECTIVE
@ STMT_SYCLKERNELCALL
A SYCLKernelCallStmt record.
@ EXPR_CHARACTER_LITERAL
A CharacterLiteral record.
@ EXPR_OBJC_ENCODE
An ObjCEncodeExpr record.
@ EXPR_CSTYLE_CAST
A CStyleCastExpr record.
@ EXPR_OBJC_BOOL_LITERAL
An ObjCBoolLiteralExpr record.
@ EXPR_EXT_VECTOR_ELEMENT
An ExtVectorElementExpr record.
@ EXPR_ATOMIC
An AtomicExpr record.
@ EXPR_OFFSETOF
An OffsetOfExpr record.
@ STMT_RETURN
A ReturnStmt record.
@ STMT_OBJC_FOR_COLLECTION
An ObjCForCollectionStmt record.
@ STMT_OMP_TARGET_TEAMS_DISTRIBUTE_DIRECTIVE
@ EXPR_ARRAY_INIT_LOOP
An ArrayInitLoopExpr record.
@ STMT_OMP_PARALLEL_MASTER_TASKLOOP_DIRECTIVE
@ STMT_OMP_PARALLEL_MASKED_TASKLOOP_SIMD_DIRECTIVE
@ STMT_CONTINUE
A ContinueStmt record.
@ EXPR_PREDEFINED
A PredefinedExpr record.
@ EXPR_CXX_BOOL_LITERAL
A CXXBoolLiteralExpr record.
@ EXPR_PAREN_LIST
A ParenListExpr record.
@ EXPR_CXX_PAREN_LIST_INIT
A CXXParenListInitExpr record.
@ STMT_COMPOUND
A CompoundStmt record.
@ STMT_FOR
A ForStmt record.
@ STMT_ATTRIBUTED
An AttributedStmt record.
@ STMT_UNRESOLVED_SYCL_KERNEL_CALL
An UnresolvedSYCLKernelCallStmt record.
@ STMT_OMP_TARGET_TEAMS_GENERIC_LOOP_DIRECTIVE
@ EXPR_CXX_REWRITTEN_BINARY_OPERATOR
A CXXRewrittenBinaryOperator record.
@ STMT_GOTO
A GotoStmt record.
@ EXPR_NO_INIT
An NoInitExpr record.
@ EXPR_OBJC_PROTOCOL_EXPR
An ObjCProtocolExpr record.
@ EXPR_ARRAY_INIT_INDEX
An ArrayInitIndexExpr record.
@ EXPR_CXX_CONSTRUCT
A CXXConstructExpr record.
@ STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE
@ STMT_OMP_PARALLEL_MASTER_TASKLOOP_SIMD_DIRECTIVE
@ STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE
@ EXPR_CXX_DYNAMIC_CAST
A CXXDynamicCastExpr record.
@ STMT_CXX_TRY
A CXXTryStmt record.
@ EXPR_GENERIC_SELECTION
A GenericSelectionExpr record.
@ EXPR_OBJC_INDIRECT_COPY_RESTORE
An ObjCIndirectCopyRestoreExpr record.
@ EXPR_CXX_INHERITED_CTOR_INIT
A CXXInheritedCtorInitExpr record.
@ EXPR_CALL
A CallExpr record.
@ EXPR_GNU_NULL
A GNUNullExpr record.
@ EXPR_OBJC_PROPERTY_REF_EXPR
An ObjCPropertyRefExpr record.
@ EXPR_CXX_CONST_CAST
A CXXConstCastExpr record.
@ STMT_REF_PTR
A reference to a previously [de]serialized Stmt record.
@ EXPR_OBJC_MESSAGE_EXPR
An ObjCMessageExpr record.
@ STMT_CXX_EXPANSION_INSTANTIATION
A CXXExpansionInstantiationStmt.
@ STMT_CASE
A CaseStmt record.
@ EXPR_CONSTANT
A constant expression context.
@ STMT_STOP
A marker record that indicates that we are at the end of an expression.
@ STMT_CXX_EXPANSION_PATTERN
A CXXExpansionPatternStmt.
@ STMT_MSASM
A MS-style AsmStmt record.
@ EXPR_CONDITIONAL_OPERATOR
A ConditionOperator record.
@ EXPR_BINARY_OPERATOR
A BinaryOperator record.
@ EXPR_CXX_STD_INITIALIZER_LIST
A CXXStdInitializerListExpr record.
@ EXPR_SHUFFLE_VECTOR
A ShuffleVectorExpr record.
@ STMT_OBJC_FINALLY
An ObjCAtFinallyStmt record.
@ EXPR_OBJC_SELECTOR_EXPR
An ObjCSelectorExpr record.
@ EXPR_FLOATING_LITERAL
A FloatingLiteral record.
@ STMT_NULL_PTR
A NULL expression.
@ STMT_DEFAULT
A DefaultStmt record.
@ EXPR_CHOOSE
A ChooseExpr record.
@ STMT_NULL
A NullStmt record.
@ EXPR_DECL_REF
A DeclRefExpr record.
@ EXPR_INIT_LIST
An InitListExpr record.
@ EXPR_IMPLICIT_VALUE_INIT
An ImplicitValueInitExpr record.
@ STMT_OBJC_AUTORELEASE_POOL
An ObjCAutoreleasePoolStmt record.
@ EXPR_RECOVERY
A RecoveryExpr record.
@ EXPR_PAREN
A ParenExpr record.
@ STMT_OMP_TARGET_PARALLEL_GENERIC_LOOP_DIRECTIVE
@ STMT_LABEL
A LabelStmt record.
@ EXPR_CXX_FUNCTIONAL_CAST
A CXXFunctionalCastExpr record.
@ EXPR_USER_DEFINED_LITERAL
A UserDefinedLiteral record.
@ EXPR_INTEGER_LITERAL
An IntegerLiteral record.
@ EXPR_SOURCE_LOC
A SourceLocExpr record.
@ EXPR_CXX_MEMBER_CALL
A CXXMemberCallExpr record.
@ STMT_SWITCH
A SwitchStmt record.
@ STMT_DECL
A DeclStmt record.
@ EXPR_OBJC_KVC_REF_EXPR
UNUSED.
@ EXPR_SIZEOF_ALIGN_OF
A SizefAlignOfExpr record.
@ STMT_BREAK
A BreakStmt record.
@ STMT_OBJC_AT_THROW
An ObjCAtThrowStmt record.
@ EXPR_ADDR_LABEL
An AddrLabelExpr record.
@ EXPR_MATRIX_ELEMENT
A MatrixElementExpr record.
@ STMT_CXX_FOR_RANGE
A CXXForRangeStmt record.
@ EXPR_CXX_ADDRSPACE_CAST
A CXXAddrspaceCastExpr record.
@ EXPR_ARRAY_SUBSCRIPT
An ArraySubscriptExpr record.
@ EXPR_UNARY_OPERATOR
A UnaryOperator record.
@ STMT_CXX_CATCH
A CXXCatchStmt record.
@ EXPR_BUILTIN_PP_EMBED
A EmbedExpr record.
@ STMT_INDIRECT_GOTO
An IndirectGotoStmt record.
@ DESIG_ARRAY_RANGE
GNU array range designator.
@ DESIG_FIELD_NAME
Field designator where only the field name is known.
@ DESIG_FIELD_DECL
Field designator where the field has been resolved to a declaration.
@ DESIG_ARRAY
Array designator.
ExtensionBlockRecordTypes
Record code for extension blocks.
@ EXTENSION_METADATA
Metadata describing this particular extension.
@ FIRST_EXTENSION_RECORD_ID
The first record ID allocated to the extensions themselves.
uint32_t CXXCtorInitializersID
An ID number that refers to a list of CXXCtorInitializers in an AST file.
SubmoduleRecordTypes
Record types used within a submodule description block.
@ SUBMODULE_EXCLUDED_HEADER
Specifies a header that has been explicitly excluded from this submodule.
@ SUBMODULE_TOPHEADER
Specifies a top-level header that falls into this (sub)module.
@ SUBMODULE_PRIVATE_TEXTUAL_HEADER
Specifies a header that is private to this submodule but must be textually included.
@ SUBMODULE_HEADER
Specifies a header that falls into this (sub)module.
@ SUBMODULE_EXPORT_AS
Specifies the name of the module that will eventually re-export the entities in this module.
@ SUBMODULE_UMBRELLA_DIR
Specifies an umbrella directory.
@ SUBMODULE_UMBRELLA_HEADER
Specifies the umbrella header used to create this module, if any.
@ SUBMODULE_REQUIRES
Specifies a required feature.
@ SUBMODULE_PRIVATE_HEADER
Specifies a header that is private to this submodule.
@ SUBMODULE_IMPORTS
Specifies the submodules that are imported by this submodule.
@ SUBMODULE_CONFLICT
Specifies a conflict with another module.
@ SUBMODULE_CHILD
Specifies a direct submodule by name and ID, enabling on-demand deserialization of children without l...
@ SUBMODULE_INITIALIZERS
Specifies some declarations with initializers that must be emitted to initialize the module.
@ SUBMODULE_END
Defines the end of a single submodule. Sentinel record without any data.
@ SUBMODULE_DEFINITION
Defines the major attributes of a submodule, including its name and parent.
@ SUBMODULE_LINK_LIBRARY
Specifies a library or framework to link against.
@ SUBMODULE_CONFIG_MACRO
Specifies a configuration macro for this module.
@ SUBMODULE_EXPORTS
Specifies the submodules that are re-exported from this submodule.
@ SUBMODULE_TEXTUAL_HEADER
Specifies a header that is part of the module but must be textually included.
@ SUBMODULE_AFFECTING_MODULES
Specifies affecting modules that were not imported.
uint32_t SelectorID
An ID number that refers to an ObjC selector in an AST file.
const unsigned int NUM_PREDEF_IDENT_IDS
The number of predefined identifier IDs.
Definition ASTBitCodes.h:66
OptionsRecordTypes
Record types that occur within the options block inside the control block.
@ FILE_SYSTEM_OPTIONS
Record code for the filesystem options table.
@ TARGET_OPTIONS
Record code for the target options table.
@ PREPROCESSOR_OPTIONS
Record code for the preprocessor options table.
@ HEADER_SEARCH_OPTIONS
Record code for the headers search options table.
@ CODEGEN_OPTIONS
Record code for the codegen options table.
@ LANGUAGE_OPTIONS
Record code for the language options table.
const unsigned int NUM_PREDEF_PP_ENTITY_IDS
The number of predefined preprocessed entity IDs.
const unsigned int NUM_PREDEF_SUBMODULE_IDS
The number of predefined submodule IDs.
BlockIDs
Describes the various kinds of blocks that occur within an AST file.
@ SUBMODULE_BLOCK_ID
The block containing the submodule structure.
@ PREPROCESSOR_DETAIL_BLOCK_ID
The block containing the detailed preprocessing record.
@ AST_BLOCK_ID
The AST block, which acts as a container around the full AST block.
@ SOURCE_MANAGER_BLOCK_ID
The block containing information about the source manager.
@ CONTROL_BLOCK_ID
The control block, which contains all of the information that needs to be validated prior to committi...
@ DECLTYPES_BLOCK_ID
The block containing the definitions of all of the types and decls used within the AST file.
@ PREPROCESSOR_BLOCK_ID
The block containing information about the preprocessor.
@ COMMENTS_BLOCK_ID
The block containing comments.
@ UNHASHED_CONTROL_BLOCK_ID
A block with unhashed content.
@ EXTENSION_BLOCK_ID
A block containing a module file extension.
@ OPTIONS_BLOCK_ID
The block of configuration options, used to check that a module is being used in a configuration comp...
@ INPUT_FILES_BLOCK_ID
The block of input files, which were used as inputs to create this AST file.
uint32_t CXXBaseSpecifiersID
An ID number that refers to a set of CXXBaseSpecifiers in an AST file.
CommentRecordTypes
Record types used within a comments block.
DeclIDBase::DeclID DeclID
An ID number that refers to a declaration in an AST file.
Definition ASTBitCodes.h:70
const unsigned VERSION_MINOR
AST file minor version number supported by this version of Clang.
Definition ASTBitCodes.h:57
SourceManagerRecordTypes
Record types used within a source manager block.
@ SM_SLOC_FILE_ENTRY
Describes a source location entry (SLocEntry) for a file.
@ SM_SLOC_BUFFER_BLOB_COMPRESSED
Describes a zlib-compressed blob that contains the data for a buffer entry.
@ SM_SLOC_BUFFER_ENTRY
Describes a source location entry (SLocEntry) for a buffer.
@ SM_SLOC_BUFFER_BLOB
Describes a blob that contains the data for a buffer entry.
@ SM_SLOC_EXPANSION_ENTRY
Describes a source location entry (SLocEntry) for a macro expansion.
const unsigned int NUM_PREDEF_SELECTOR_IDS
The number of predefined selector IDs.
const unsigned VERSION_MAJOR
AST file major version number supported by this version of Clang.
Definition ASTBitCodes.h:47
uint64_t PreprocessedEntityID
An ID number that refers to an entity in the detailed preprocessing record.
llvm::support::detail::packed_endian_specific_integral< serialization::DeclID, llvm::endianness::native, llvm::support::unaligned > unaligned_decl_id_t
PreprocessorRecordTypes
Record types used within a preprocessor block.
@ PP_TOKEN
Describes one token.
@ PP_MACRO_FUNCTION_LIKE
A function-like macro definition.
@ PP_MACRO_OBJECT_LIKE
An object-like macro definition.
@ PP_MACRO_DIRECTIVE_HISTORY
The macro directives history for a particular identifier.
@ PP_MODULE_MACRO
A macro directive exported by a module.
ControlRecordTypes
Record types that occur within the control block.
@ MODULE_DIRECTORY_DEPENDENCIES
Record code for the directories this AST file depends on the listing of.
@ MODULE_MAP_FILE
Record code for the module map file that was used to build this AST file.
@ MODULE_DIRECTORY
Record code for the module build directory.
@ ORIGINAL_FILE_ID
Record code for file ID of the file or buffer that was used to generate the AST file.
@ MODULE_NAME
Record code for the module name.
@ ORIGINAL_FILE
Record code for the original file that was used to generate the AST file, including both its file ID ...
@ IMPORT
Record code for another AST file imported by this AST file.
@ INPUT_FILE_OFFSETS
Offsets into the input-files block where input files reside.
@ METADATA
AST file metadata, including the AST file version number and information about the compiler used to b...
UnhashedControlBlockRecordTypes
Record codes for the unhashed control block.
@ DIAGNOSTIC_OPTIONS
Record code for the diagnostic options table.
@ HEADER_SEARCH_ENTRY_USAGE
Record code for the indices of used header search entries.
@ AST_BLOCK_HASH
Record code for the content hash of the AST block.
@ DIAG_PRAGMA_MAPPINGS
Record code for #pragma diagnostic mappings.
@ SIGNATURE
Record code for the signature that identifiers this AST file.
@ HEADER_SEARCH_PATHS
Record code for the headers search paths.
@ VFS_USAGE
Record code for the indices of used VFSs.
uint64_t MacroID
An ID number that refers to a macro in an AST file.
uint64_t GlobalMacroID
A global ID number that refers to a macro in an AST file.
InputFileRecordTypes
Record types that occur within the input-files block inside the control block.
@ INPUT_FILE_HASH
The input file content hash.
@ INPUT_FILE
An input file.
uint64_t TypeID
An ID number that refers to a type in an AST file.
Definition ASTBitCodes.h:88
PreprocessorDetailRecordTypes
Record types used within a preprocessor detail block.
@ PPD_INCLUSION_DIRECTIVE
Describes an inclusion directive within the preprocessing record.
@ PPD_MACRO_EXPANSION
Describes a macro expansion within the preprocessing record.
@ PPD_MACRO_DEFINITION
Describes a macro definition within the preprocessing record.
uint32_t SubmoduleID
An ID number that refers to a submodule in a module file.
const unsigned int NUM_PREDEF_MACRO_IDS
The number of predefined macro IDs.
ASTRecordTypes
Record types that occur within the AST block itself.
@ DECL_UPDATE_OFFSETS
Record for offsets of DECL_UPDATES records for declarations that were modified after being deserializ...
@ STATISTICS
Record code for the extra statistics we gather while generating an AST file.
@ FLOAT_CONTROL_PRAGMA_OPTIONS
Record code for #pragma float_control options.
@ KNOWN_NAMESPACES
Record code for the set of known namespaces, which are used for typo correction.
@ SPECIAL_TYPES
Record code for the set of non-builtin, special types.
@ PENDING_IMPLICIT_INSTANTIATIONS
Record code for pending implicit instantiations.
@ TYPE_OFFSET
Record code for the offsets of each type.
@ DELEGATING_CTORS
The list of delegating constructor declarations.
@ PP_ASSUME_NONNULL_LOC
ID 66 used to be the list of included files.
@ EXT_VECTOR_DECLS
Record code for the set of ext_vector type names.
@ OPENCL_EXTENSIONS
Record code for enabled OpenCL extensions.
@ UPDATE_SPECIALIZATION
Record code for updated specialization.
@ FP_PRAGMA_OPTIONS
Record code for floating point #pragma options.
@ PP_UNSAFE_BUFFER_USAGE
Record code for #pragma clang unsafe_buffer_usage begin/end.
@ CXX_ADDED_TEMPLATE_PARTIAL_SPECIALIZATION
@ DECLS_WITH_EFFECTS_TO_VERIFY
Record code for Sema's vector of functions/blocks with effects to be verified.
@ VTABLE_USES
Record code for the array of VTable uses.
@ LATE_PARSED_TEMPLATE
Record code for late parsed template functions.
@ DECLS_TO_CHECK_FOR_DEFERRED_DIAGS
Record code for the Decls to be checked for deferred diags.
@ SUBMODULE_METADATA
Record that encodes the number of submodules, their base ID in the AST file, and for each module the ...
@ DECL_OFFSET
Record code for the offsets of each decl.
@ SOURCE_MANAGER_LINE_TABLE
Record code for the source manager line table information, which stores information about #line direc...
@ PP_COUNTER_VALUE
The value of the next COUNTER to dispense.
@ OMP_REQUIRES_DECLS
Record code for the OpenMP 'requires' directives seen in the TU.
@ DELETE_EXPRS_TO_ANALYZE
Delete expressions that will be analyzed later.
@ EXTNAME_UNDECLARED_IDENTIFIERS
Record code for extname-redefined undeclared identifiers.
@ RELATED_DECLS_MAP
Record code for related declarations that have to be deserialized together from the same module.
@ UPDATE_VISIBLE
Record code for an update to a decl context's lookup table.
@ CUDA_PRAGMA_FORCE_HOST_DEVICE_DEPTH
Number of unmatched pragma clang cuda_force_host_device begin directives we've seen.
@ MACRO_OFFSET
Record code for the table of offsets of each macro ID.
@ PPD_ENTITIES_OFFSETS
Record code for the table of offsets to entries in the preprocessing record.
@ RISCV_VECTOR_INTRINSICS_PRAGMA
Record code for pragma clang riscv intrinsic vector.
@ OPENCL_EXTENSION_DECLS
Record code for declarations associated with OpenCL extensions.
@ VTABLES_TO_EMIT
Record code for vtables to emit.
@ IDENTIFIER_OFFSET
Record code for the table of offsets of each identifier ID.
@ OBJC_CATEGORIES
Record code for the array of Objective-C categories (including extensions).
@ METHOD_POOL
Record code for the Objective-C method pool,.
@ DELAYED_NAMESPACE_LEXICAL_VISIBLE_RECORD
Record code for lexical and visible block for delayed namespace in reduced BMI.
@ PP_CONDITIONAL_STACK
The stack of open ifs/ifdefs recorded in a preamble.
@ REFERENCED_SELECTOR_POOL
Record code for referenced selector pool.
@ SOURCE_LOCATION_OFFSETS
Record code for the table of offsets into the block of source-location information.
@ WEAK_UNDECLARED_IDENTIFIERS
Record code for weak undeclared identifiers.
@ UNDEFINED_BUT_USED
Record code for undefined but used functions and variables that need a definition in this TU.
@ FILE_SORTED_DECLS
Record code for a file sorted array of DeclIDs in a module.
@ MSSTRUCT_PRAGMA_OPTIONS
Record code for #pragma ms_struct options.
@ TENTATIVE_DEFINITIONS
Record code for the array of tentative definitions.
@ UNUSED_FILESCOPED_DECLS
Record code for the array of unused file scoped decls.
@ ALIGN_PACK_PRAGMA_OPTIONS
Record code for #pragma align/pack options.
@ IMPORTED_MODULES
Record code for an array of all of the (sub)modules that were imported by the AST file.
@ SELECTOR_OFFSETS
Record code for the table of offsets into the Objective-C method pool.
@ UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES
Record code for potentially unused local typedef names.
@ OPENCL_EXTENSION_TYPES
Record code for types associated with OpenCL extensions.
@ EAGERLY_DESERIALIZED_DECLS
Record code for the array of eagerly deserialized decls.
@ INTERESTING_IDENTIFIERS
A list of "interesting" identifiers.
@ HEADER_SEARCH_TABLE
Record code for header search information.
@ OBJC_CATEGORIES_MAP
Record code for map of Objective-C class definition IDs to the ObjC categories in a module that are a...
@ METADATA_OLD_FORMAT
This is so that older clang versions, before the introduction of the control block,...
@ CUDA_SPECIAL_DECL_REFS
Record code for special CUDA declarations.
@ TU_UPDATE_LEXICAL
Record code for an update to the TU's lexically contained declarations.
@ PPD_SKIPPED_RANGES
A table of skipped ranges within the preprocessing record.
@ IDENTIFIER_TABLE
Record code for the identifier table.
@ SEMA_DECL_REFS
Record code for declarations that Sema keeps references of.
@ OPTIMIZE_PRAGMA_OPTIONS
Record code for #pragma optimize options.
@ MODULE_OFFSET_MAP
Record code for the remapping information used to relate loaded modules to the various offsets and ID...
@ POINTERS_TO_MEMBERS_PRAGMA_OPTIONS
Record code for #pragma ms_struct options.
TypeID LocalTypeID
Same with TypeID except that the LocalTypeID is only meaningful with the corresponding ModuleFile.
Definition ASTBitCodes.h:94
uint64_t IdentifierID
An ID number that refers to an identifier in an AST file.
Definition ASTBitCodes.h:63
uint64_t LocalMacroID
A local to a module ID number that refers to a macro in an AST file.
Top level wrappers for InstallAPI frontend operations.
OverloadedOperatorKind
Enumeration specifying the different kinds of C++ overloaded operators.
const FunctionProtoType * T
Diagnostic wrappers for TextAPI types for error reporting.
Definition Dominators.h:30
__UINTPTR_TYPE__ uintptr_t
An unsigned integer type with the property that any valid pointer to void can be converted to this ty...
friend bool operator<(const ObjCCategoriesInfo &X, const ObjCCategoriesInfo &Y)
friend bool operator>=(const ObjCCategoriesInfo &X, const ObjCCategoriesInfo &Y)
friend bool operator>(const ObjCCategoriesInfo &X, const ObjCCategoriesInfo &Y)
friend bool operator<=(const ObjCCategoriesInfo &X, const ObjCCategoriesInfo &Y)
ObjCCategoriesInfo(LocalDeclID ID, unsigned Offset)
A structure for putting "fast"-unqualified QualTypes into a DenseMap.
static bool isEqual(QualType A, QualType B)
static bool isEqual(const clang::serialization::DeclarationNameKey &L, const clang::serialization::DeclarationNameKey &R)
static unsigned getHashValue(const clang::serialization::DeclarationNameKey &Key)