Home | History | Annotate | Download | only in Serialization

Lines Matching refs:Record

78     ASTWriter::RecordDataImpl &Record;
81 /// \brief Type code that corresponds to the record generated.
84 ASTTypeWriter(ASTWriter &Writer, ASTWriter::RecordDataImpl &Record)
85 : Writer(Writer), Record(Record), Code(TYPE_EXT_QUAL) { }
102 Writer.AddTypeRef(T->getElementType(), Record);
107 Writer.AddTypeRef(T->getPointeeType(), Record);
112 Writer.AddTypeRef(T->getOriginalType(), Record);
117 Writer.AddTypeRef(T->getPointeeType(), Record);
122 Writer.AddTypeRef(T->getPointeeTypeAsWritten(), Record);
123 Record.push_back(T->isSpelledAsLValue());
128 Writer.AddTypeRef(T->getPointeeTypeAsWritten(), Record);
133 Writer.AddTypeRef(T->getPointeeType(), Record);
134 Writer.AddTypeRef(QualType(T->getClass(), 0), Record);
139 Writer.AddTypeRef(T->getElementType(), Record);
140 Record.push_back(T->getSizeModifier()); // FIXME: stable values
141 Record.push_back(T->getIndexTypeCVRQualifiers()); // FIXME: stable values
146 Writer.AddAPInt(T->getSize(), Record);
157 Writer.AddSourceLocation(T->getLBracketLoc(), Record);
158 Writer.AddSourceLocation(T->getRBracketLoc(), Record);
164 Writer.AddTypeRef(T->getElementType(), Record);
165 Record.push_back(T->getNumElements());
166 Record.push_back(T->getVectorKind());
176 Writer.AddTypeRef(T->getResultType(), Record);
178 Record.push_back(C.getNoReturn());
179 Record.push_back(C.getHasRegParm());
180 Record.push_back(C.getRegParm());
182 Record.push_back(C.getCC());
183 Record.push_back(C.getProducesResult());
193 Record.push_back(T->getNumArgs());
195 Writer.AddTypeRef(T->getArgType(I), Record);
196 Record.push_back(T->isVariadic());
197 Record.push_back(T->hasTrailingReturn());
198 Record.push_back(T->getTypeQuals());
199 Record.push_back(static_cast<unsigned>(T->getRefQualifier()));
200 Record.push_back(T->getExceptionSpecType());
202 Record.push_back(T->getNumExceptions());
204 Writer.AddTypeRef(T->getExceptionType(I), Record);
208 Writer.AddDeclRef(T->getExceptionSpecDecl(), Record);
209 Writer.AddDeclRef(T->getExceptionSpecTemplate(), Record);
211 Writer.AddDeclRef(T->getExceptionSpecDecl(), Record);
217 Writer.AddDeclRef(T->getDecl(), Record);
222 Writer.AddDeclRef(T->getDecl(), Record);
224 Writer.AddTypeRef(T->getCanonicalTypeInternal(), Record);
234 Writer.AddTypeRef(T->getUnderlyingType(), Record);
239 Writer.AddTypeRef(T->getUnderlyingType(), Record);
245 Writer.AddTypeRef(T->getBaseType(), Record);
246 Writer.AddTypeRef(T->getUnderlyingType(), Record);
247 Record.push_back(T->getUTTKind());
252 Writer.AddTypeRef(T->getDeducedType(), Record);
253 Record.push_back(T->isDecltypeAuto());
255 Record.push_back(T->isDependentType());
260 Record.push_back(T->isDependentType());
261 Writer.AddDeclRef(T->getDecl()->getCanonicalDecl(), Record);
277 Writer.AddTypeRef(T->getModifiedType(), Record);
278 Writer.AddTypeRef(T->getEquivalentType(), Record);
279 Record.push_back(T->getAttrKind());
286 Writer.AddTypeRef(QualType(T->getReplacedParameter(), 0), Record);
287 Writer.AddTypeRef(T->getReplacementType(), Record);
294 Writer.AddTypeRef(QualType(T->getReplacedParameter(), 0), Record);
295 Writer.AddTemplateArgument(T->getArgumentPack(), Record);
302 Record.push_back(T->isDependentType());
303 Writer.AddTemplateName(T->getTemplateName(), Record);
304 Record.push_back(T->getNumArgs());
307 Writer.AddTemplateArgument(*ArgI, Record);
311 Record);
319 Writer.AddSourceRange(T->getBracketsRange(), Record);
332 Record.push_back(T->getDepth());
333 Record.push_back(T->getIndex());
334 Record.push_back(T->isParameterPack());
335 Writer.AddDeclRef(T->getDecl(), Record);
341 Record.push_back(T->getKeyword());
342 Writer.AddNestedNameSpecifier(T->getQualifier(), Record);
343 Writer.AddIdentifierRef(T->getIdentifier(), Record);
346 Record);
353 Record.push_back(T->getKeyword());
354 Writer.AddNestedNameSpecifier(T->getQualifier(), Record);
355 Writer.AddIdentifierRef(T->getIdentifier(), Record);
356 Record.push_back(T->getNumArgs());
359 Writer.AddTemplateArgument(*I, Record);
364 Writer.AddTypeRef(T->getPattern(), Record);
366 Record.push_back(*NumExpansions + 1);
368 Record.push_back(0);
373 Writer.AddTypeRef(T->getInnerType(), Record);
378 Record.push_back(T->getKeyword());
379 Writer.AddNestedNameSpecifier(T->getQualifier(), Record);
380 Writer.AddTypeRef(T->getNamedType(), Record);
385 Writer.AddDeclRef(T->getDecl()->getCanonicalDecl(), Record);
386 Writer.AddTypeRef(T->getInjectedSpecializationType(), Record);
391 Writer.AddDeclRef(T->getDecl()->getCanonicalDecl(), Record);
396 Writer.AddTypeRef(T->getBaseType(), Record);
397 Record.push_back(T->getNumProtocols());
400 Writer.AddDeclRef(*I, Record);
406 Writer.AddTypeRef(T->getPointeeType(), Record);
412 Writer.AddTypeRef(T->getValueType(), Record);
420 ASTWriter::RecordDataImpl &Record;
423 TypeLocWriter(ASTWriter &Writer, ASTWriter::RecordDataImpl &Record)
424 : Writer(Writer), Record(Record) { }
441 Writer.AddSourceLocation(TL.getBuiltinLoc(), Record);
443 Record.push_back(TL.getWrittenTypeSpec());
444 Record.push_back(TL.getWrittenSignSpec());
445 Record.push_back(TL.getWrittenWidthSpec());
446 Record.push_back(TL.hasModeAttr());
450 Writer.AddSourceLocation(TL.getNameLoc(), Record);
453 Writer.AddSourceLocation(TL.getStarLoc(), Record);
459 Writer.AddSourceLocation(TL.getCaretLoc(), Record);
462 Writer.AddSourceLocation(TL.getAmpLoc(), Record);
465 Writer.AddSourceLocation(TL.getAmpAmpLoc(), Record);
468 Writer.AddSourceLocation(TL.getStarLoc(), Record);
469 Writer.AddTypeSourceInfo(TL.getClassTInfo(), Record);
472 Writer.AddSourceLocation(TL.getLBracketLoc(), Record);
473 Writer.AddSourceLocation(TL.getRBracketLoc(), Record);
474 Record.push_back(TL.getSizeExpr() ? 1 : 0);
493 Writer.AddSourceLocation(TL.getNameLoc(), Record);
496 Writer.AddSourceLocation(TL.getNameLoc(), Record);
499 Writer.AddSourceLocation(TL.getNameLoc(), Record);
502 Writer.AddSourceLocation(TL.getLocalRangeBegin(), Record);
503 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
504 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
505 Writer.AddSourceLocation(TL.getLocalRangeEnd(), Record);
507 Writer.AddDeclRef(TL.getArg(i), Record);
516 Writer.AddSourceLocation(TL.getNameLoc(), Record);
519 Writer.AddSourceLocation(TL.getNameLoc(), Record);
522 Writer.AddSourceLocation(TL.getTypeofLoc(), Record);
523 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
524 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
527 Writer.AddSourceLocation(TL.getTypeofLoc(), Record);
528 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
529 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
530 Writer.AddTypeSourceInfo(TL.getUnderlyingTInfo(), Record);
533 Writer.AddSourceLocation(TL.getNameLoc(), Record);
536 Writer.AddSourceLocation(TL.getKWLoc(), Record);
537 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
538 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
539 Writer.AddTypeSourceInfo(TL.getUnderlyingTInfo(), Record);
542 Writer.AddSourceLocation(TL.getNameLoc(), Record);
545 Writer.AddSourceLocation(TL.getNameLoc(), Record);
548 Writer.AddSourceLocation(TL.getNameLoc(), Record);
551 Writer.AddSourceLocation(TL.getAttrNameLoc(), Record);
554 Writer.AddSourceLocation(range.getBegin(), Record);
555 Writer.AddSourceLocation(range.getEnd(), Record);
559 Record.push_back(operand ? 1 : 0);
562 Writer.AddSourceLocation(TL.getAttrEnumOperandLoc(), Record);
566 Writer.AddSourceLocation(TL.getNameLoc(), Record);
570 Writer.AddSourceLocation(TL.getNameLoc(), Record);
574 Writer.AddSourceLocation(TL.getNameLoc(), Record);
578 Writer.AddSourceLocation(TL.getTemplateKeywordLoc(), Record);
579 Writer.AddSourceLocation(TL.getTemplateNameLoc(), Record);
580 Writer.AddSourceLocation(TL.getLAngleLoc(), Record);
581 Writer.AddSourceLocation(TL.getRAngleLoc(), Record);
584 TL.getArgLoc(i).getLocInfo(), Record);
587 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
588 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
591 Writer.AddSourceLocation(TL.getElaboratedKeywordLoc(), Record);
592 Writer.AddNestedNameSpecifierLoc(TL.getQualifierLoc(), Record);
595 Writer.AddSourceLocation(TL.getNameLoc(), Record);
598 Writer.AddSourceLocation(TL.getElaboratedKeywordLoc(), Record);
599 Writer.AddNestedNameSpecifierLoc(TL.getQualifierLoc(), Record);
600 Writer.AddSourceLocation(TL.getNameLoc(), Record);
604 Writer.AddSourceLocation(TL.getElaboratedKeywordLoc(), Record);
605 Writer.AddNestedNameSpecifierLoc(TL.getQualifierLoc(), Record);
606 Writer.AddSourceLocation(TL.getTemplateKeywordLoc(), Record);
607 Writer.AddSourceLocation(TL.getTemplateNameLoc(), Record);
608 Writer.AddSourceLocation(TL.getLAngleLoc(), Record);
609 Writer.AddSourceLocation(TL.getRAngleLoc(), Record);
612 TL.getArgLoc(I).getLocInfo(), Record);
615 Writer.AddSourceLocation(TL.getEllipsisLoc(), Record);
618 Writer.AddSourceLocation(TL.getNameLoc(), Record);
621 Record.push_back(TL.hasBaseTypeAsWritten());
622 Writer.AddSourceLocation(TL.getLAngleLoc(), Record);
623 Writer.AddSourceLocation(TL.getRAngleLoc(), Record);
625 Writer.AddSourceLocation(TL.getProtocolLoc(i), Record);
628 Writer.AddSourceLocation(TL.getStarLoc(), Record);
631 Writer.AddSourceLocation(TL.getKWLoc(), Record);
632 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
633 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
642 ASTWriter::RecordDataImpl &Record) {
643 Record.clear();
644 Record.push_back(ID);
645 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETBID, Record);
649 Record.clear();
651 Record.push_back(*Name++);
652 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_BLOCKNAME, Record);
657 ASTWriter::RecordDataImpl &Record) {
658 Record.clear();
659 Record.push_back(ID);
661 Record.push_back(*Name++);
662 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETRECORDNAME, Record);
666 ASTWriter::RecordDataImpl &Record) {
667 #define RECORD(X) EmitRecordID(X, #X, Stream, Record)
668 RECORD(STMT_STOP);
669 RECORD(STMT_NULL_PTR);
670 RECORD(STMT_NULL);
671 RECORD(STMT_COMPOUND);
672 RECORD(STMT_CASE);
673 RECORD(STMT_DEFAULT);
674 RECORD(STMT_LABEL);
675 RECORD(STMT_ATTRIBUTED);
676 RECORD(STMT_IF);
677 RECORD(STMT_SWITCH);
678 RECORD(STMT_WHILE);
679 RECORD(STMT_DO);
680 RECORD(STMT_FOR);
681 RECORD(STMT_GOTO);
682 RECORD(STMT_INDIRECT_GOTO);
683 RECORD(STMT_CONTINUE);
684 RECORD(STMT_BREAK);
685 RECORD(STMT_RETURN);
686 RECORD(STMT_DECL);
687 RECORD(STMT_GCCASM);
688 RECORD(STMT_MSASM);
689 RECORD(EXPR_PREDEFINED);
690 RECORD(EXPR_DECL_REF);
691 RECORD(EXPR_INTEGER_LITERAL);
692 RECORD(EXPR_FLOATING_LITERAL);
693 RECORD(EXPR_IMAGINARY_LITERAL);
694 RECORD(EXPR_STRING_LITERAL);
695 RECORD(EXPR_CHARACTER_LITERAL);
696 RECORD(EXPR_PAREN);
697 RECORD(EXPR_UNARY_OPERATOR);
698 RECORD(EXPR_SIZEOF_ALIGN_OF);
699 RECORD(EXPR_ARRAY_SUBSCRIPT);
700 RECORD(EXPR_CALL);
701 RECORD(EXPR_MEMBER);
702 RECORD(EXPR_BINARY_OPERATOR);
703 RECORD(EXPR_COMPOUND_ASSIGN_OPERATOR);
704 RECORD(EXPR_CONDITIONAL_OPERATOR);
705 RECORD(EXPR_IMPLICIT_CAST);
706 RECORD(EXPR_CSTYLE_CAST);
707 RECORD(EXPR_COMPOUND_LITERAL);
708 RECORD(EXPR_EXT_VECTOR_ELEMENT);
709 RECORD(EXPR_INIT_LIST);
710 RECORD(EXPR_DESIGNATED_INIT);
711 RECORD(EXPR_IMPLICIT_VALUE_INIT);
712 RECORD(EXPR_VA_ARG);
713 RECORD(EXPR_ADDR_LABEL);
714 RECORD(EXPR_STMT);
715 RECORD(EXPR_CHOOSE);
716 RECORD(EXPR_GNU_NULL);
717 RECORD(EXPR_SHUFFLE_VECTOR);
718 RECORD(EXPR_BLOCK);
719 RECORD(EXPR_GENERIC_SELECTION);
720 RECORD(EXPR_OBJC_STRING_LITERAL);
721 RECORD(EXPR_OBJC_BOXED_EXPRESSION);
722 RECORD(EXPR_OBJC_ARRAY_LITERAL);
723 RECORD(EXPR_OBJC_DICTIONARY_LITERAL);
724 RECORD(EXPR_OBJC_ENCODE);
725 RECORD(EXPR_OBJC_SELECTOR_EXPR);
726 RECORD(EXPR_OBJC_PROTOCOL_EXPR);
727 RECORD(EXPR_OBJC_IVAR_REF_EXPR);
728 RECORD(EXPR_OBJC_PROPERTY_REF_EXPR);
729 RECORD(EXPR_OBJC_KVC_REF_EXPR);
730 RECORD(EXPR_OBJC_MESSAGE_EXPR);
731 RECORD(STMT_OBJC_FOR_COLLECTION);
732 RECORD(STMT_OBJC_CATCH);
733 RECORD(STMT_OBJC_FINALLY);
734 RECORD(STMT_OBJC_AT_TRY);
735 RECORD(STMT_OBJC_AT_SYNCHRONIZED);
736 RECORD(STMT_OBJC_AT_THROW);
737 RECORD(EXPR_OBJC_BOOL_LITERAL);
738 RECORD(EXPR_CXX_OPERATOR_CALL);
739 RECORD(EXPR_CXX_CONSTRUCT);
740 RECORD(EXPR_CXX_STATIC_CAST);
741 RECORD(EXPR_CXX_DYNAMIC_CAST);
742 RECORD(EXPR_CXX_REINTERPRET_CAST);
743 RECORD(EXPR_CXX_CONST_CAST);
744 RECORD(EXPR_CXX_FUNCTIONAL_CAST);
745 RECORD(EXPR_USER_DEFINED_LITERAL);
746 RECORD(EXPR_CXX_STD_INITIALIZER_LIST);
747 RECORD(EXPR_CXX_BOOL_LITERAL);
748 RECORD(EXPR_CXX_NULL_PTR_LITERAL);
749 RECORD(EXPR_CXX_TYPEID_EXPR);
750 RECORD(EXPR_CXX_TYPEID_TYPE);
751 RECORD(EXPR_CXX_UUIDOF_EXPR);
752 RECORD(EXPR_CXX_UUIDOF_TYPE);
753 RECORD(EXPR_CXX_THIS);
754 RECORD(EXPR_CXX_THROW);
755 RECORD(EXPR_CXX_DEFAULT_ARG);
756 RECORD(EXPR_CXX_BIND_TEMPORARY);
757 RECORD(EXPR_CXX_SCALAR_VALUE_INIT);
758 RECORD(EXPR_CXX_NEW);
759 RECORD(EXPR_CXX_DELETE);
760 RECORD(EXPR_CXX_PSEUDO_DESTRUCTOR);
761 RECORD(EXPR_EXPR_WITH_CLEANUPS);
762 RECORD(EXPR_CXX_DEPENDENT_SCOPE_MEMBER);
763 RECORD(EXPR_CXX_DEPENDENT_SCOPE_DECL_REF);
764 RECORD(EXPR_CXX_UNRESOLVED_CONSTRUCT);
765 RECORD(EXPR_CXX_UNRESOLVED_MEMBER);
766 RECORD(EXPR_CXX_UNRESOLVED_LOOKUP);
767 RECORD(EXPR_CXX_UNARY_TYPE_TRAIT);
768 RECORD(EXPR_CXX_NOEXCEPT);
769 RECORD(EXPR_OPAQUE_VALUE);
770 RECORD(EXPR_BINARY_TYPE_TRAIT);
771 RECORD(EXPR_PACK_EXPANSION);
772 RECORD(EXPR_SIZEOF_PACK);
773 RECORD(EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK);
774 RECORD(EXPR_CUDA_KERNEL_CALL);
775 #undef RECORD
779 RecordData Record;
782 #define BLOCK(X) EmitBlockID(X ## _ID, #X, Stream, Record)
783 #define RECORD(X) EmitRecordID(X, #X, Stream, Record)
787 RECORD(METADATA);
788 RECORD(IMPORTS);
789 RECORD(LANGUAGE_OPTIONS);
790 RECORD(TARGET_OPTIONS);
791 RECORD(ORIGINAL_FILE);
792 RECORD(ORIGINAL_PCH_DIR);
793 RECORD(ORIGINAL_FILE_ID);
794 RECORD(INPUT_FILE_OFFSETS);
795 RECORD(DIAGNOSTIC_OPTIONS);
796 RECORD(FILE_SYSTEM_OPTIONS);
797 RECORD(HEADER_SEARCH_OPTIONS);
798 RECORD(PREPROCESSOR_OPTIONS);
801 RECORD(INPUT_FILE);
805 RECORD(TYPE_OFFSET);
806 RECORD(DECL_OFFSET);
807 RECORD(IDENTIFIER_OFFSET);
808 RECORD(IDENTIFIER_TABLE);
809 RECORD(EXTERNAL_DEFINITIONS);
810 RECORD(SPECIAL_TYPES);
811 RECORD(STATISTICS);
812 RECORD(TENTATIVE_DEFINITIONS);
813 RECORD(UNUSED_FILESCOPED_DECLS);
814 RECORD(LOCALLY_SCOPED_EXTERN_C_DECLS);
815 RECORD(SELECTOR_OFFSETS);
816 RECORD(METHOD_POOL);
817 RECORD(PP_COUNTER_VALUE);
818 RECORD(SOURCE_LOCATION_OFFSETS);
819 RECORD(SOURCE_LOCATION_PRELOADS);
820 RECORD(EXT_VECTOR_DECLS);
821 RECORD(PPD_ENTITIES_OFFSETS);
822 RECORD(REFERENCED_SELECTOR_POOL);
823 RECORD(TU_UPDATE_LEXICAL);
824 RECORD(LOCAL_REDECLARATIONS_MAP);
825 RECORD(SEMA_DECL_REFS);
826 RECORD(WEAK_UNDECLARED_IDENTIFIERS);
827 RECORD(PENDING_IMPLICIT_INSTANTIATIONS);
828 RECORD(DECL_REPLACEMENTS);
829 RECORD(UPDATE_VISIBLE);
830 RECORD(DECL_UPDATE_OFFSETS);
831 RECORD(DECL_UPDATES);
832 RECORD(CXX_BASE_SPECIFIER_OFFSETS);
833 RECORD(DIAG_PRAGMA_MAPPINGS);
834 RECORD(CUDA_SPECIAL_DECL_REFS);
835 RECORD(HEADER_SEARCH_TABLE);
836 RECORD(FP_PRAGMA_OPTIONS);
837 RECORD(OPENCL_EXTENSIONS);
838 RECORD(DELEGATING_CTORS);
839 RECORD(KNOWN_NAMESPACES);
840 RECORD(UNDEFINED_BUT_USED);
841 RECORD(MODULE_OFFSET_MAP);
842 RECORD(SOURCE_MANAGER_LINE_TABLE);
843 RECORD(OBJC_CATEGORIES_MAP);
844 RECORD(FILE_SORTED_DECLS);
845 RECORD(IMPORTED_MODULES);
846 RECORD(MERGED_DECLARATIONS);
847 RECORD(LOCAL_REDECLARATIONS);
848 RECORD(OBJC_CATEGORIES);
849 RECORD(MACRO_OFFSET);
850 RECORD(MACRO_TABLE);
854 RECORD(SM_SLOC_FILE_ENTRY);
855 RECORD(SM_SLOC_BUFFER_ENTRY);
856 RECORD(SM_SLOC_BUFFER_BLOB);
857 RECORD(SM_SLOC_EXPANSION_ENTRY);
861 RECORD(PP_MACRO_OBJECT_LIKE);
862 RECORD(PP_MACRO_FUNCTION_LIKE);
863 RECORD(PP_TOKEN);
867 RECORD(TYPE_EXT_QUAL);
868 RECORD(TYPE_COMPLEX);
869 RECORD(TYPE_POINTER);
870 RECORD(TYPE_BLOCK_POINTER);
871 RECORD(TYPE_LVALUE_REFERENCE);
872 RECORD(TYPE_RVALUE_REFERENCE);
873 RECORD(TYPE_MEMBER_POINTER);
874 RECORD(TYPE_CONSTANT_ARRAY);
875 RECORD(TYPE_INCOMPLETE_ARRAY);
876 RECORD(TYPE_VARIABLE_ARRAY);
877 RECORD(TYPE_VECTOR);
878 RECORD(TYPE_EXT_VECTOR);
879 RECORD(TYPE_FUNCTION_PROTO);
880 RECORD(TYPE_FUNCTION_NO_PROTO);
881 RECORD(TYPE_TYPEDEF);
882 RECORD(TYPE_TYPEOF_EXPR);
883 RECORD(TYPE_TYPEOF);
884 RECORD(TYPE_RECORD);
885 RECORD(TYPE_ENUM);
886 RECORD(TYPE_OBJC_INTERFACE);
887 RECORD(TYPE_OBJC_OBJECT);
888 RECORD(TYPE_OBJC_OBJECT_POINTER);
889 RECORD(TYPE_DECLTYPE);
890 RECORD(TYPE_ELABORATED);
891 RECORD(TYPE_SUBST_TEMPLATE_TYPE_PARM);
892 RECORD(TYPE_UNRESOLVED_USING);
893 RECORD(TYPE_INJECTED_CLASS_NAME);
894 RECORD(TYPE_OBJC_OBJECT);
895 RECORD(TYPE_TEMPLATE_TYPE_PARM);
896 RECORD(TYPE_TEMPLATE_SPECIALIZATION);
897 RECORD(TYPE_DEPENDENT_NAME);
898 RECORD(TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION);
899 RECORD(TYPE_DEPENDENT_SIZED_ARRAY);
900 RECORD(TYPE_PAREN);
901 RECORD(TYPE_PACK_EXPANSION);
902 RECORD(TYPE_ATTRIBUTED);
903 RECORD(TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK);
904 RECORD(TYPE_ATOMIC);
905 RECORD(DECL_TYPEDEF);
906 RECORD(DECL_ENUM);
907 RECORD(DECL_RECORD);
908 RECORD(DECL_ENUM_CONSTANT);
909 RECORD(DECL_FUNCTION);
910 RECORD(DECL_OBJC_METHOD);
911 RECORD(DECL_OBJC_INTERFACE);
912 RECORD(DECL_OBJC_PROTOCOL);
913 RECORD(DECL_OBJC_IVAR);
914 RECORD(DECL_OBJC_AT_DEFS_FIELD);
915 RECORD(DECL_OBJC_CATEGORY);
916 RECORD(DECL_OBJC_CATEGORY_IMPL);
917 RECORD(DECL_OBJC_IMPLEMENTATION);
918 RECORD(DECL_OBJC_COMPATIBLE_ALIAS);
919 RECORD(DECL_OBJC_PROPERTY);
920 RECORD(DECL_OBJC_PROPERTY_IMPL);
921 RECORD(DECL_FIELD);
922 RECORD(DECL_MS_PROPERTY);
923 RECORD(DECL_VAR);
924 RECORD(DECL_IMPLICIT_PARAM);
925 RECORD(DECL_PARM_VAR);
926 RECORD(DECL_FILE_SCOPE_ASM);
927 RECORD(DECL_BLOCK);
928 RECORD(DECL_CONTEXT_LEXICAL);
929 RECORD(DECL_CONTEXT_VISIBLE);
930 RECORD(DECL_NAMESPACE);
931 RECORD(DECL_NAMESPACE_ALIAS);
932 RECORD(DECL_USING);
933 RECORD(DECL_USING_SHADOW);
934 RECORD(DECL_USING_DIRECTIVE);
935 RECORD(DECL_UNRESOLVED_USING_VALUE);
936 RECORD(DECL_UNRESOLVED_USING_TYPENAME);
937 RECORD(DECL_LINKAGE_SPEC);
938 RECORD(DECL_CXX_RECORD);
939 RECORD(DECL_CXX_METHOD);
940 RECORD(DECL_CXX_CONSTRUCTOR);
941 RECORD(DECL_CXX_DESTRUCTOR);
942 RECORD(DECL_CXX_CONVERSION);
943 RECORD(DECL_ACCESS_SPEC);
944 RECORD(DECL_FRIEND);
945 RECORD(DECL_FRIEND_TEMPLATE);
946 RECORD(DECL_CLASS_TEMPLATE);
947 RECORD
948 RECORD(DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION);
949 RECORD(DECL_VAR_TEMPLATE);
950 RECORD(DECL_VAR_TEMPLATE_SPECIALIZATION);
951 RECORD(DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION);
952 RECORD(DECL_FUNCTION_TEMPLATE);
953 RECORD(DECL_TEMPLATE_TYPE_PARM);
954 RECORD(DECL_NON_TYPE_TEMPLATE_PARM);
955 RECORD(DECL_TEMPLATE_TEMPLATE_PARM);
956 RECORD(DECL_STATIC_ASSERT);
957 RECORD(DECL_CXX_BASE_SPECIFIERS);
958 RECORD(DECL_INDIRECTFIELD);
959 RECORD(DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK);
962 AddStmtsExprs(Stream, Record);
965 RECORD(PPD_MACRO_EXPANSION);
966 RECORD(PPD_MACRO_DEFINITION);
967 RECORD(PPD_INCLUSION_DIRECTIVE);
969 #undef RECORD
1016 RecordData Record;
1029 Record.push_back(METADATA);
1030 Record.push_back(VERSION_MAJOR);
1031 Record.push_back(VERSION_MINOR);
1032 Record.push_back(CLANG_VERSION_MAJOR);
1033 Record.push_back(CLANG_VERSION_MINOR);
1034 Record.push_back(!isysroot.empty());
1035 Record.push_back(ASTHasCompilerErrors);
1036 Stream.EmitRecordWithBlob(MetadataAbbrevCode, Record,
1043 Record.clear();
1051 Record.push_back((unsigned)(*M)->Kind); // FIXME: Stable encoding
1052 AddSourceLocation((*M)->ImportLoc, Record);
1053 Record.push_back((*M)->File->getSize());
1054 Record.push_back((*M)->File->getModificationTime());
1057 Record.push_back(FileName.size());
1058 Record.append(FileName.begin(), FileName.end());
1060 Stream.EmitRecord(IMPORTS, Record);
1064 Record.clear();
1067 Record.push_back(LangOpts.Name);
1069 Record.push_back(static_cast<unsigned>(LangOpts.get##Name()));
1071 #define SANITIZER(NAME, ID) Record.push_back(LangOpts.Sanitize.ID);
1074 Record.push_back((unsigned) LangOpts.ObjCRuntime.getKind());
1075 AddVersionTuple(LangOpts.ObjCRuntime.getVersion(), Record);
1077 Record.push_back(LangOpts.CurrentModule.size());
1078 Record.append(LangOpts.CurrentModule.begin(), LangOpts.CurrentModule.end());
1081 Record.push_back(LangOpts.CommentOpts.BlockCommandNames.size());
1086 AddString(*I, Record);
1088 Record.push_back(LangOpts.CommentOpts.ParseAllComments);
1090 Stream.EmitRecord(LANGUAGE_OPTIONS, Record);
1093 Record.clear();
1096 AddString(TargetOpts.Triple, Record);
1097 AddString(TargetOpts.CPU, Record);
1098 AddString(TargetOpts.ABI, Record);
1099 AddString(TargetOpts.CXXABI, Record);
1100 AddString(TargetOpts.LinkerVersion, Record);
1101 Record.push_back(TargetOpts.FeaturesAsWritten.size());
1103 AddString(TargetOpts.FeaturesAsWritten[I], Record);
1105 Record.push_back(TargetOpts.Features.size());
1107 AddString(TargetOpts.Features[I], Record);
1109 Stream.EmitRecord(TARGET_OPTIONS, Record);
1112 Record.clear();
1115 #define DIAGOPT(Name, Bits, Default) Record.push_back(DiagOpts.Name);
1117 Record.push_back(static_cast<unsigned>(DiagOpts.get##Name()));
1119 Record.push_back(DiagOpts.Warnings.size());
1121 AddString(DiagOpts.Warnings[I], Record);
1124 Stream.EmitRecord(DIAGNOSTIC_OPTIONS, Record);
1127 Record.clear();
1130 AddString(FSOpts.WorkingDir, Record);
1131 Stream.EmitRecord(FILE_SYSTEM_OPTIONS, Record);
1134 Record.clear();
1137 AddString(HSOpts.Sysroot, Record);
1140 Record.push_back(HSOpts.UserEntries.size());
1143 AddString(Entry.Path, Record);
1144 Record.push_back(static_cast<unsigned>(Entry.Group));
1145 Record.push_back(Entry.IsFramework);
1146 Record.push_back(Entry.IgnoreSysRoot);
1150 Record.push_back(HSOpts.SystemHeaderPrefixes.size());
1152 AddString(HSOpts.SystemHeaderPrefixes[I].Prefix, Record);
1153 Record.push_back(HSOpts.SystemHeaderPrefixes[I].IsSystemHeader);
1156 AddString(HSOpts.ResourceDir, Record);
1157 AddString(HSOpts.ModuleCachePath, Record);
1158 Record.push_back(HSOpts.DisableModuleHash);
1159 Record.push_back(HSOpts.UseBuiltinIncludes);
1160 Record.push_back(HSOpts.UseStandardSystemIncludes);
1161 Record.push_back(HSOpts.UseStandardCXXIncludes);
1162 Record.push_back(HSOpts.UseLibcxx);
1163 Stream.EmitRecord(HEADER_SEARCH_OPTIONS, Record);
1166 Record.clear();
1170 Record.push_back(PPOpts.Macros.size());
1172 AddString(PPOpts.Macros[I].first, Record);
1173 Record.push_back(PPOpts.Macros[I].second);
1177 Record.push_back(PPOpts.Includes.size());
1179 AddString(PPOpts.Includes[I], Record);
1182 Record.push_back(PPOpts.MacroIncludes.size());
1184 AddString(PPOpts.MacroIncludes[I], Record);
1186 Record.push_back(PPOpts.UsePredefines);
1187 // Detailed record is important since it is used for the module cache hash.
1188 Record.push_back(PPOpts.DetailedRecord);
1189 AddString(PPOpts.ImplicitPCHInclude, Record);
1190 AddString(PPOpts.ImplicitPTHInclude, Record);
1191 Record.push_back(static_cast<unsigned>(PPOpts.ObjCXXARCStandardLibrary));
1192 Stream.EmitRecord(PREPROCESSOR_OPTIONS, Record);
1210 Record.clear();
1211 Record.push_back(ORIGINAL_FILE);
1212 Record.push_back(SM.getMainFileID().getOpaqueValue());
1213 Stream.EmitRecordWithBlob(FileAbbrevCode, Record, MainFileNameStr);
1216 Record.clear();
1217 Record.push_back(SM.getMainFileID().getOpaqueValue());
1218 Stream.EmitRecord(ORIGINAL_FILE_ID, Record);
1232 RecordData Record;
1233 Record.push_back(ORIGINAL_PCH_DIR);
1234 Stream.EmitRecordWithBlob(AbbrevCode, Record, origDir);
1259 RecordData Record;
1334 // Record this entry's offset.
1342 Record.clear();
1343 Record.push_back(INPUT_FILE);
1344 Record.push_back(InputFileOffsets.size());
1347 Record.push_back(Entry.File->getSize());
1348 Record.push_back(Entry.File->getModificationTime());
1351 Record.push_back(Entry.BufferOverridden);
1368 Stream.EmitRecordWithBlob(IFAbbrevCode, Record, Filename);
1383 Record.clear();
1384 Record.push_back(INPUT_FILE_OFFSETS);
1385 Record.push_back(InputFileOffsets.size());
1386 Record.push_back(UserFilesNum);
1387 Stream.EmitRecordWithBlob(OffsetsAbbrevCode, Record, data(InputFileOffsets));
1613 RecordData Record;
1614 Record.push_back(HEADER_SEARCH_TABLE);
1615 Record.push_back(BucketOffset);
1616 Record.push_back(NumHeaderSearchEntries);
1617 Record.push_back(TableData.size());
1619 Stream.EmitRecordWithBlob(TableAbbrev, Record, TableData.str());
1637 RecordData Record;
1660 // Record the offset of this source-location entry.
1663 // Figure out which record code to use.
1673 Record.clear();
1674 Record.push_back(Code);
1677 Record.push_back(SLoc->getOffset() - 2);
1680 Record.push_back(File.getIncludeLoc().getRawEncoding());
1681 Record.push_back(File.getFileCharacteristic()); // FIXME: stable encoding
1682 Record.push_back(File.hasLineDirectives());
1691 Record.push_back(InputFileIDs[Content->OrigEntry]);
1693 Record.push_back(File.NumCreatedFIDs);
1697 Record.push_back(FDI->second->FirstDeclIndex);
1698 Record.push_back(FDI->second->DeclIDs.size());
1700 Record.push_back(0);
1701 Record.push_back(0);
1704 Stream.EmitRecordWithAbbrev(SLocFileAbbrv, Record);
1707 Record.clear();
1708 Record.push_back(SM_SLOC_BUFFER_BLOB);
1711 Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record,
1725 Stream.EmitRecordWithBlob(SLocBufferAbbrv, Record,
1727 Record.clear();
1728 Record.push_back(SM_SLOC_BUFFER_BLOB);
1729 Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record,
1740 Record.push_back(Expansion.getSpellingLoc().getRawEncoding());
1741 Record.push_back(Expansion.getExpansionLocStart().getRawEncoding());
1742 Record.push_back(Expansion.isMacroArgExpansion() ? 0
1749 Record.push_back(NextOffset - SLoc->getOffset() - 1);
1750 Stream.EmitRecordWithAbbrev(SLocExpansionAbbrv, Record);
1769 Record.clear();
1770 Record.push_back(SOURCE_LOCATION_OFFSETS);
1771 Record.push_back(SLocEntryOffsets.size());
1772 Record.push_back(SourceMgr.getNextLocalOffset() - 1); // skip dummy
1773 Stream.EmitRecordWithBlob(SLocOffsetsAbbrev, Record, data(SLocEntryOffsets));
1784 Record.clear();
1786 Record.push_back(LineTable.getNumFilenames());
1792 Record.push_back(FilenameLen);
1794 Record.insert(Record.end(), Filename, Filename + FilenameLen);
1805 Record.push_back(L->first.ID);
1808 Record.push_back(L->second.size());
1812 Record.push_back(LE->FileOffset);
1813 Record.push_back(LE->LineNo);
1814 Record.push_back(LE->FilenameID);
1815 Record.push_back((unsigned)LE->FileKind);
1816 Record.push_back(LE->IncludeOffset);
1819 Stream.EmitRecord(SOURCE_MANAGER_LINE_TABLE, Record);
1896 RecordData Record;
1900 Record.push_back(PP.getCounterValue());
1901 Stream.EmitRecord(PP_COUNTER_VALUE, Record);
1902 Record.clear();
1955 AddSourceLocation(MD->getLocation(), Record);
1956 Record.push_back(MD->getKind());
1959 Record.push_back(InfoID);
1960 Record.push_back(DefMD->isImported());
1961 Record.push_back(DefMD->isAmbiguous());
1965 Record.push_back(VisMD->isPublic());
1968 if (Record.empty())
1971 Stream.EmitRecord(PP_MACRO_DIRECTIVE_HISTORY, Record);
1972 Record.clear();
2000 // Record the local offset of this macro.
2011 AddIdentifierRef(Name, Record);
2012 Record.push_back(inferSubmoduleIDFromLocation(MI->getDefinitionLoc()));
2013 AddSourceLocation(MI->getDefinitionLoc(), Record);
2014 AddSourceLocation(MI->getDefinitionEndLoc(), Record);
2015 Record.push_back(MI->isUsed());
2022 Record.push_back(MI->isC99Varargs());
2023 Record.push_back(MI->isGNUVarargs());
2024 Record.push_back(MI->hasCommaPasting());
2025 Record.push_back(MI->getNumArgs());
2028 AddIdentifierRef(*I, Record);
2031 // If we have a detailed preprocessing record, record the macro definition
2034 Record.push_back(MacroDefinitions[PPRec->findMacroDefinition(MI)]);
2036 Stream.EmitRecord(Code, Record);
2037 Record.clear();
2045 AddToken(Tok, Record);
2046 Stream.EmitRecord(PP_TOKEN, Record);
2047 Record.clear();
2072 Record.push_back(MACRO_TABLE);
2073 Record.push_back(BucketOffset);
2074 Stream.EmitRecordWithBlob(MacroTableAbbrev, Record, MacroTable.str());
2075 Record.clear();
2086 Record.clear();
2087 Record.push_back(MACRO_OFFSET);
2088 Record.push_back(MacroOffsets.size());
2089 Record.push_back(FirstMacroID - NUM_PREDEF_MACRO_IDS);
2090 Stream.EmitRecordWithBlob(MacroOffsetAbbrev, Record,
2103 // If the preprocessor has a preprocessing record, emit it.
2124 RecordData Record;
2129 Record.clear();
2135 // Record this macro definition's ID.
2138 AddIdentifierRef(MD->getName(), Record);
2139 Stream.EmitRecord(PPD_MACRO_DEFINITION, Record);
2144 Record.push_back(ME->isBuiltinMacro());
2146 AddIdentifierRef(ME->getName(), Record);
2148 Record.push_back(MacroDefinitions[ME->getDefinition()]);
2149 Stream.EmitRecord(PPD_MACRO_EXPANSION, Record);
2154 Record.push_back(PPD_INCLUSION_DIRECTIVE);
2155 Record.push_back(ID->getFileName().size());
2156 Record.push_back(ID->wasInQuotes());
2157 Record.push_back(static_cast<unsigned>(ID->getKind()));
2158 Record.push_back(ID->importedModule());
2165 Stream.EmitRecordWithBlob(InclusionAbbrev, Record, Buffer);
2173 // Write the offsets table for the preprocessing record.
2185 Record.clear();
2186 Record.push_back(PPD_ENTITIES_OFFSETS);
2187 Record.push_back(FirstPreprocessorEntityID - NUM_PREDEF_PP_ENTITY_IDS);
2188 Stream.EmitRecordWithBlob(PPEOffsetAbbrev, Record,
2313 RecordData Record;
2314 Record.push_back(getNumberOfModules(WritingModule));
2315 Record.push_back(FirstSubmoduleID - NUM_PREDEF_SUBMODULE_IDS);
2316 Stream.EmitRecord(SUBMODULE_METADATA, Record);
2327 Record.clear();
2328 Record.push_back(SUBMODULE_DEFINITION);
2329 Record.push_back(ID);
2332 Record.push_back(SubmoduleIDs[Mod->Parent]);
2334 Record.push_back(0);
2336 Record.push_back(Mod->IsFramework);
2337 Record.push_back(Mod->IsExplicit);
2338 Record.push_back(Mod->IsSystem);
2339 Record.push_back(Mod->InferSubmodules);
2340 Record.push_back(Mod->InferExplicitSubmodules);
2341 Record.push_back(Mod->InferExportWildcard);
2342 Record.push_back(Mod->ConfigMacrosExhaustive);
2343 Stream.EmitRecordWithBlob(DefinitionAbbrev, Record, Mod->Name);
2347 Record.clear();
2348 Record.push_back(SUBMODULE_REQUIRES);
2349 Stream.EmitRecordWithBlob(RequiresAbbrev, Record,
2356 Record.clear();
2357 Record.push_back(SUBMODULE_UMBRELLA_HEADER);
2358 Stream.EmitRecordWithBlob(UmbrellaAbbrev, Record,
2361 Record.clear();
2362 Record.push_back(SUBMODULE_UMBRELLA_DIR);
2363 Stream.EmitRecordWithBlob(UmbrellaDirAbbrev, Record,
2369 Record.clear();
2370 Record.push_back(SUBMODULE_HEADER);
2371 Stream.EmitRecordWithBlob(HeaderAbbrev, Record,
2376 Record.clear();
2377 Record.push_back(SUBMODULE_EXCLUDED_HEADER);
2378 Stream.EmitRecordWithBlob(ExcludedHeaderAbbrev, Record,
2383 Record.clear();
2384 Record.push_back(SUBMODULE_PRIVATE_HEADER);
2385 Stream.EmitRecordWithBlob(PrivateHeaderAbbrev, Record,
2391 Record.clear();
2392 Record.push_back(SUBMODULE_TOPHEADER);
2393 Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record,
2399 Record.clear();
2403 Record.push_back(ImportedID);
2405 Stream.EmitRecord(SUBMODULE_IMPORTS, Record);
2410 Record.clear();
2415 Record.push_back(ExportedID);
2417 Record.push_back(0);
2420 Record.push_back(Mod->Exports[I].getInt());
2422 Stream.EmitRecord(SUBMODULE_EXPORTS, Record);
2427 Record.clear();
2428 Record.push_back(SUBMODULE_LINK_LIBRARY);
2429 Record.push_back(Mod->LinkLibraries[I].IsFramework);
2430 Stream.EmitRecordWithBlob(LinkLibraryAbbrev, Record,
2436 Record.clear();
2437 Record.push_back(SUBMODULE_CONFLICT);
2440 Record.push_back(OtherID);
2441 Stream.EmitRecordWithBlob(ConflictAbbrev, Record,
2447 Record.clear();
2448 Record.push_back(SUBMODULE_CONFIG_MACRO);
2449 Stream.EmitRecordWithBlob(ConfigMacroAbbrev, Record,
2497 RecordData Record;
2505 Record.push_back(point.Loc.getRawEncoding());
2507 Record.push_back(DiagStateID);
2514 Record.push_back(I->first);
2515 Record.push_back(I->second.getMapping());
2518 Record.push_back(-1); // mark the end of the diag/map pairs for this
2523 if (!Record.empty())
2524 Stream.EmitRecord(DIAG_PRAGMA_MAPPINGS, Record);
2531 RecordData Record;
2543 Record.clear();
2544 Record.push_back(CXX_BASE_SPECIFIER_OFFSETS);
2545 Record.push_back(CXXBaseSpecifiersOffsets.size());
2546 Stream.EmitRecordWithBlob(BaseSpecifierOffsetAbbrev, Record,
2562 // Record the offset for this type.
2571 RecordData Record;
2574 ASTTypeWriter W(*this, Record);
2578 AddTypeRef(T.getLocalUnqualifiedType(), Record);
2579 Record.push_back(Qs.getAsOpaqueValue());
2592 // Emit the serialized record.
2593 Stream.EmitRecord(W.Code, Record);
2614 RecordData Record;
2615 Record.push_back(DECL_CONTEXT_LEXICAL);
2622 Stream.EmitRecordWithBlob(DeclContextLexicalAbbrev, Record, data(Decls));
2628 RecordData Record;
2637 Record.clear();
2638 Record.push_back(TYPE_OFFSET);
2639 Record.push_back(TypeOffsets.size());
2640 Record.push_back(FirstTypeID - NUM_PREDEF_TYPE_IDS);
2641 Stream.EmitRecordWithBlob(TypeOffsetAbbrev, Record, data(TypeOffsets));
2650 Record.clear();
2651 Record.push_back(DECL_OFFSET);
2652 Record.push_back(DeclOffsets.size());
2653 Record.push_back(FirstDeclID - NUM_PREDEF_DECL_IDS);
2654 Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record, data(DeclOffsets));
2659 RecordData Record;
2677 Record.push_back(FILE_SORTED_DECLS);
2678 Record.push_back(FileSortedIDs.size());
2679 Stream.EmitRecordWithBlob(AbbrevCode, Record, data(FileSortedIDs));
2685 RecordData Record;
2689 Record.clear();
2690 AddSourceRange((*I)->getSourceRange(), Record);
2691 Record.push_back((*I)->getKind());
2692 Record.push_back((*I)->isTrailingComment());
2693 Record.push_back((*I)->isAlmostTrailingComment());
2694 Stream.EmitRecord(COMMENTS_RAW_COMMENT, Record);
2872 RecordData Record;
2873 Record.push_back(METHOD_POOL);
2874 Record.push_back(BucketOffset);
2875 Record.push_back(NumTableEntries);
2876 Stream.EmitRecordWithBlob(MethodPoolAbbrev, Record, MethodPool.str());
2887 Record.clear();
2888 Record.push_back(SELECTOR_OFFSETS);
2889 Record.push_back(SelectorOffsets.size());
2890 Record.push_back(FirstSelectorID - NUM_PREDEF_SELECTOR_IDS);
2891 Stream.EmitRecordWithBlob(SelectorOffsetAbbrev, Record,
2902 RecordData Record;
2912 AddSelectorRef(Sel, Record);
2913 AddSourceLocation(Loc, Record);
2915 Stream.EmitRecord(REFERENCED_SELECTOR_POOL, Record);
3089 // Record the location of the key data. This is used when generating
3228 RecordData Record;
3229 Record.push_back(IDENTIFIER_TABLE);
3230 Record.push_back(BucketOffset);
3231 Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable.str());
3247 RecordData Record;
3248 Record.push_back(IDENTIFIER_OFFSET);
3249 Record.push_back(IdentifierOffsets.size());
3250 Record.push_back(FirstIdentID - NUM_PREDEF_IDENT_IDS);
3251 Stream.EmitRecordWithBlob(IdentifierOffsetAbbrev, Record,
3452 RecordData Record;
3453 Record.push_back(DECL_CONTEXT_VISIBLE);
3454 Record.push_back(BucketOffset);
3455 Stream.EmitRecordWithBlob(DeclContextVisibleLookupAbbrev, Record,
3458 Stream.EmitRecord(DECL_CONTEXT_VISIBLE, Record);
3499 RecordData Record;
3500 Record.push_back(UPDATE_VISIBLE);
3501 Record.push_back(getDeclID(cast<Decl>(DC)));
3502 Record.push_back(BucketOffset);
3503 Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable.str());
3508 RecordData Record;
3509 Record.push_back(Opts.fp_contract);
3510 Stream.EmitRecord(FP_PRAGMA_OPTIONS, Record);
3519 RecordData Record;
3520 #define OPENCLEXT(nm) Record.push_back(Opts.nm);
3522 Stream.EmitRecord(OPENCL_EXTENSIONS, Record);
3593 RecordData Record;
3594 Record.push_back(LOCAL_REDECLARATIONS_MAP);
3595 Record.push_back(LocalRedeclsMap.size());
3596 Stream.EmitRecordWithBlob(AbbrevID, Record,
3629 // Record this interface -> category map.
3646 RecordData Record;
3647 Record.push_back(OBJC_CATEGORIES_MAP);
3648 Record.push_back(CategoriesMap.size());
3649 Stream.EmitRecordWithBlob(AbbrevID, Record,
3661 RecordData Record;
3669 Record.push_back(CanonID);
3670 Record.push_back(I->second.size());
3671 Record.append(I->second.begin(), I->second.end());
3673 Stream.EmitRecord(MERGED_DECLARATIONS, Record);
3680 /// \brief Write a record containing the given attributes.
3682 RecordDataImpl &Record) {
3683 Record.push_back(Attrs.size());
3687 Record.push_back(A->getKind()); // FIXME: stable encoding, target attrs
3688 AddSourceRange(A->getRange(), Record);
3695 void ASTWriter::AddToken(const Token &Tok, RecordDataImpl &Record) {
3696 AddSourceLocation(Tok.getLocation(), Record);
3697 Record.push_back(Tok.getLength());
3701 AddIdentifierRef(Tok.getIdentifierInfo(), Record);
3703 Record.push_back(Tok.getKind());
3705 Record.push_back(Tok.getFlags());
3708 void ASTWriter::AddString(StringRef Str, RecordDataImpl &Record) {
3709 Record.push_back(Str.size());
3710 Record.insert(Record.end(), Str.begin(), Str.end());
3714 RecordDataImpl &Record) {
3715 Record.push_back(Version.getMajor());
3717 Record.push_back(*Minor + 1);
3719 Record.push_back(0);
3721 Record.push_back(*Subminor + 1);
3723 Record.push_back(0);
3741 // Don't record offsets for selectors that are also available in a different
3808 ASTWriter::RecordData &Record) {
3811 Writer.AddDeclRef(*I, Record);
3881 // Build a record containing all of the tentative definitions in this file, in
3882 // TentativeDefinitions order. Generally, this record will be empty for
3887 // Build a record containing all of the file scoped decls in this file.
3893 // Build a record containing all of the delegating constructors we still need
3914 // Build a record containing all of the locally-scoped extern "C"
3915 // declarations in this header file. Generally, this record will be
3928 // Build a record containing all of the ext_vector declarations.
3932 // Build a record containing all of the VTable uses information.
3942 // Build a record containing all of dynamic classes declarations.
3946 // Build a record containing all of pending implicit instantiations.
3957 // Build a record containing some declaration references.
3969 // Build a record containing all of the known namespaces.
3979 // Build a record of all used, undefined objects that require definitions.
3994 RecordData Record;
3999 Record.clear();
4000 Record.push_back(VERSION_MAJOR);
4001 Stream.EmitRecord(METADATA_OLD_FORMAT, Record);
4018 Record.clear();
4019 Record.push_back(TU_UPDATE_LEXICAL);
4020 Stream.EmitRecordWithBlob(TuUpdateLexicalAbbrev, Record,
4035 ASTWriter::UpdateRecord &Record = DeclUpdates[TU];
4036 if (Record.empty()) {
4037 Record.push_back(UPD_CXX_ADDED_ANONYMOUS_NAMESPACE);
4038 Record.push_back(reinterpret_cast<uint64_t>(NS));
4068 // Form the record of special types.
4142 Record.clear();
4143 Record.push_back(MODULE_OFFSET_MAP);
4144 Stream.EmitRecordWithBlob(ModuleOffsetMapAbbrev, Record,
4166 // Write the record containing external, unnamed definitions.
4170 // Write the record containing tentative definitions.
4174 // Write the record containing unused file scoped decls.
4178 // Write the record containing weak undeclared identifiers.
4183 // Write the record containing locally-scoped extern "C" definitions.
4188 // Write the record containing ext_vector type names.
4192 // Write the record containing VTable uses information.
4196 // Write the record containing dynamic classes declarations.
4200 // Write the record containing pending implicit instantiations.
4204 // Write the record containing declaration references of Sema.
4208 // Write the record containing CUDA-specific declaration references.
4260 Record.clear();
4261 Record.push_back(NumStatements);
4262 Record.push_back(NumMacros);
4263 Record.push_back(NumLexicalDeclContexts);
4264 Record.push_back(NumVisibleDeclContexts);
4265 Stream.EmitRecord(STATISTICS, Record);
4332 RecordData Record;
4335 Record.push_back(I->ID);
4336 Record.push_back(I->Offset);
4337 Record.push_back(I->Loc);
4339 Stream.EmitRecord(DECL_REPLACEMENTS, Record);
4342 void ASTWriter::AddSourceLocation(SourceLocation Loc, RecordDataImpl &Record) {
4343 Record.push_back(Loc.getRawEncoding());
4346 void ASTWriter::AddSourceRange(SourceRange Range, RecordDataImpl &Record) {
4347 AddSourceLocation(Range.getBegin(), Record);
4348 AddSourceLocation(Range.getEnd(), Record);
4351 void ASTWriter::AddAPInt(const llvm::APInt &Value, RecordDataImpl &Record) {
4352 Record.push_back(Value.getBitWidth());
4354 Record.append(Words, Words + Value.getNumWords());
4357 void ASTWriter::AddAPSInt(const llvm::APSInt &Value, RecordDataImpl &Record) {
4358 Record.push_back(Value.isUnsigned());
4359 AddAPInt(Value, Record);
4362 void ASTWriter::AddAPFloat(const llvm::APFloat &Value, RecordDataImpl &Record) {
4363 AddAPInt(Value.bitcastToAPInt(), Record);
4366 void ASTWriter::AddIdentifierRef(const IdentifierInfo *II, RecordDataImpl &Record) {
4367 Record.push_back(getIdentifierRef(II));
4409 void ASTWriter::AddSelectorRef(const Selector SelRef, RecordDataImpl &Record) {
4410 Record.push_back(getSelectorRef(SelRef));
4432 void ASTWriter::AddCXXTemporary(const CXXTemporary *Temp, RecordDataImpl &Record) {
4433 AddDeclRef(Temp->getDestructor(), Record);
4438 Record) {
4443 Record.push_back(NextCXXBaseSpecifiersID++);
4448 RecordDataImpl &Record) {
4454 AddTypeSourceInfo(Arg.getAsTypeSourceInfo(), Record);
4457 AddNestedNameSpecifierLoc(Arg.getTemplateQualifierLoc(), Record);
4458 AddSourceLocation(Arg.getTemplateNameLoc(), Record);
4461 AddNestedNameSpecifierLoc(Arg.getTemplateQualifierLoc(), Record);
4462 AddSourceLocation(Arg.getTemplateNameLoc(), Record);
4463 AddSourceLocation(Arg.getTemplateEllipsisLoc(), Record);
4476 RecordDataImpl &Record) {
4477 AddTemplateArgument(Arg.getArgument(), Record);
4482 Record.push_back(InfoHasSameExpr);
4487 Record);
4491 RecordDataImpl &Record) {
4493 AddTypeRef(QualType(), Record);
4497 AddTypeLoc(TInfo->getTypeLoc(), Record);
4500 void ASTWriter::AddTypeLoc(TypeLoc TL, RecordDataImpl &Record) {
4501 AddTypeRef(TL.getType(), Record);
4503 TypeLocWriter TLW(*this, Record);
4508 void ASTWriter::AddTypeRef(QualType T, RecordDataImpl &Record) {
4509 Record.push_back(GetOrCreateTypeID(T));
4554 void ASTWriter::AddDeclRef(const Decl *D, RecordDataImpl &Record) {
4555 Record.push_back(GetDeclRef(D));
4649 void ASTWriter::AddDeclarationName(DeclarationName Name, RecordDataImpl &Record) {
4651 Record.push_back(Name.getNameKind());
4654 AddIdentifierRef(Name.getAsIdentifierInfo(), Record);
4660 AddSelectorRef(Name.getObjCSelector(), Record);
4666 AddTypeRef(Name.getCXXNameType(), Record);
4670 Record.push_back(Name.getCXXOverloadedOperator());
4674 AddIdentifierRef(Name.getCXXLiteralIdentifier(), Record);
4684 DeclarationName Name, RecordDataImpl &Record) {
4689 AddTypeSourceInfo(DNLoc.NamedType.TInfo, Record);
4695 Record);
4698 Record);
4704 Record);
4717 RecordDataImpl &Record) {
4718 AddDeclarationName(NameInfo.getName(), Record);
4719 AddSourceLocation(NameInfo.getLoc(), Record);
4720 AddDeclarationNameLoc(NameInfo.getInfo(), NameInfo.getName(), Record);
4724 RecordDataImpl &Record) {
4725 AddNestedNameSpecifierLoc(Info.QualifierLoc, Record);
4726 Record.push_back(Info.NumTemplParamLists);
4728 AddTemplateParameterList(Info.TemplParamLists[i], Record);
4732 RecordDataImpl &Record) {
4743 Record.push_back(NestedNames.size());
4747 Record.push_back(Kind);
4750 AddIdentifierRef(NNS->getAsIdentifier(), Record);
4754 AddDeclRef(NNS->getAsNamespace(), Record);
4758 AddDeclRef(NNS->getAsNamespaceAlias(), Record);
4763 AddTypeRef(QualType(NNS->getAsType(), 0), Record);
4764 Record.push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate);
4775 RecordDataImpl &Record) {
4787 Record.push_back(NestedNames.size());
4792 Record.push_back(Kind);
4795 AddIdentifierRef(NNS.getNestedNameSpecifier()->getAsIdentifier(), Record);
4796 AddSourceRange(NNS.getLocalSourceRange(), Record);
4800 AddDeclRef(NNS.getNestedNameSpecifier()->getAsNamespace(), Record);
4801 AddSourceRange(NNS.getLocalSourceRange(), Record);
4805 AddDeclRef(NNS.getNestedNameSpecifier()->getAsNamespaceAlias(), Record);
4806 AddSourceRange(NNS.getLocalSourceRange(), Record);
4811 Record.push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate);
4812 AddTypeLoc(NNS.getTypeLoc(), Record);
4813 AddSourceLocation(NNS.getLocalSourceRange().getEnd(), Record);
4817 AddSourceLocation(NNS.getLocalSourceRange().getEnd(), Record);
4823 void ASTWriter::AddTemplateName(TemplateName Name, RecordDataImpl &Record) {
4825 Record.push_back(Kind);
4828 AddDeclRef(Name.getAsTemplateDecl(), Record);
4833 Record.push_back(OvT->size());
4836 AddDeclRef(*I, Record);
4842 AddNestedNameSpecifier(QualT->getQualifier(), Record);
4843 Record.push_back(QualT->hasTemplateKeyword());
4844 AddDeclRef(QualT->getTemplateDecl(), Record);
4850 AddNestedNameSpecifier(DepT->getQualifier(), Record);
4851 Record.push_back(DepT->isIdentifier());
4853 AddIdentifierRef(DepT->getIdentifier(), Record);
4855 Record.push_back(DepT->getOperator());
4862 AddDeclRef(subst->getParameter(), Record);
4863 AddTemplateName(subst->getReplacement(), Record);
4870 AddDeclRef(SubstPack->getParameterPack(), Record);
4871 AddTemplateArgument(SubstPack->getArgumentPack(), Record);
4878 RecordDataImpl &Record) {
4879 Record.push_back(Arg.getKind());
4884 AddTypeRef(Arg.getAsType(), Record);
4887 AddDeclRef(Arg.getAsDecl(), Record);
4888 Record.push_back(Arg.isDeclForReferenceParam());
4891 AddTypeRef(Arg.getNullPtrType(), Record);
4894 AddAPSInt(Arg.getAsIntegral(), Record);
4895 AddTypeRef(Arg.getIntegralType(), Record);
4898 AddTemplateName(Arg.getAsTemplateOrTemplatePattern(), Record);
4901 AddTemplateName(Arg.getAsTemplateOrTemplatePattern(), Record);
4903 Record.push_back(*NumExpansions + 1);
4905 Record.push_back(0);
4911 Record.push_back(Arg.pack_size());
4914 AddTemplateArgument(*I, Record);
4921 RecordDataImpl &Record) {
4923 AddSourceLocation(TemplateParams->getTemplateLoc(), Record);
4924 AddSourceLocation(TemplateParams->getLAngleLoc(), Record);
4925 AddSourceLocation(TemplateParams->getRAngleLoc(), Record);
4926 Record.push_back(TemplateParams->size());
4930 AddDeclRef(*P, Record);
4936 RecordDataImpl &Record) {
4938 Record.push_back(TemplateArgs->size());
4940 AddTemplateArgument(TemplateArgs->get(i), Record);
4945 Record) {
4946 Record.push_back(Set.size());
4949 AddDeclRef(I.getDecl(), Record);
4950 Record.push_back(I.getAccess());
4955 RecordDataImpl &Record) {
4956 Record.push_back(Base.isVirtual());
4957 Record.push_back(Base.isBaseOfClass());
4958 Record.push_back(Base.getAccessSpecifierAsWritten());
4959 Record.push_back(Base.getInheritConstructors());
4960 AddTypeSourceInfo(Base.getTypeSourceInfo(), Record);
4961 AddSourceRange(Base.getSourceRange(), Record);
4964 Record);
4968 RecordData Record;
4970 Record.clear();
4972 // Record the offset of this base-specifier set.
4984 Record.push_back(BEnd - B);
4986 AddCXXBaseSpecifier(*B, Record);
4987 Stream.EmitRecord(serialization::DECL_CXX_BASE_SPECIFIERS, Record);
4999 RecordDataImpl &Record) {
5000 Record.push_back(NumCtorInitializers);
5005 Record.push_back(CTOR_INITIALIZER_BASE);
5006 AddTypeSourceInfo(Init->getTypeSourceInfo(), Record);
5007 Record.push_back(Init->isBaseVirtual());
5009 Record.push_back(CTOR_INITIALIZER_DELEGATING);
5010 AddTypeSourceInfo(Init->getTypeSourceInfo(), Record);
5012 Record.push_back(CTOR_INITIALIZER_MEMBER);
5013 AddDeclRef(Init->getMember(), Record);
5015 Record.push_back(CTOR_INITIALIZER_INDIRECT_MEMBER);
5016 AddDeclRef(Init->getIndirectMember(), Record);
5019 AddSourceLocation(Init->getMemberLocation(), Record);
5021 AddSourceLocation(Init->getLParenLoc(), Record);
5022 AddSourceLocation(Init->getRParenLoc(), Record);
5023 Record.push_back(Init->isWritten());
5025 Record.push_back(Init->getSourceOrder());
5027 Record.push_back(Init->getNumArrayIndices());
5029 AddDeclRef(Init->getArrayIndex(i), Record);
5034 void ASTWriter::AddCXXDefinitionData(const CXXRecordDecl *D, RecordDataImpl &Record) {
5037 Record.push_back(Data.IsLambda);
5038 Record.push_back(Data.UserDeclaredConstructor);
5039 Record.push_back(Data.UserDeclaredSpecialMembers);
5040 Record.push_back(Data.Aggregate);
5041 Record.push_back(Data.PlainOldData);
5042 Record.push_back(Data.Empty);
5043 Record.push_back(Data.Polymorphic);
5044 Record.push_back(Data.Abstract);
5045 Record.push_back(Data.IsStandardLayout);
5046 Record.push_back(Data.HasNoNonEmptyBases);
5047 Record.push_back(Data.HasPrivateFields);
5048 Record.push_back(Data.HasProtectedFields);
5049 Record.push_back(Data.HasPublicFields);
5050 Record.push_back(Data.HasMutableFields);
5051 Record.push_back(Data.HasOnlyCMembers);
5052 Record.push_back(Data.HasInClassInitializer);
5053 Record.push_back(Data.HasUninitializedReferenceMember);
5054 Record.push_back(Data.NeedOverloadResolutionForMoveConstructor);
5055 Record.push_back(Data.NeedOverloadResolutionForMoveAssignment);
5056 Record.push_back(Data.NeedOverloadResolutionForDestructor);
5057 Record.push_back(Data.DefaultedMoveConstructorIsDeleted);
5058 Record.push_back(Data.DefaultedMoveAssignmentIsDeleted);
5059 Record.push_back(Data.DefaultedDestructorIsDeleted);
5060 Record.push_back(Data.HasTrivialSpecialMembers);
5061 Record.push_back(Data.HasIrrelevantDestructor);
5062 Record.push_back(Data.HasConstexprNonCopyMoveConstructor);
5063 Record.push_back(Data.DefaultedDefaultConstructorIsConstexpr);
5064 Record.push_back(Data.HasConstexprDefaultConstructor);
5065 Record.push_back(Data.HasNonLiteralTypeFieldsOrBases);
5066 Record.push_back(Data.ComputedVisibleConversions);
5067 Record.push_back(Data.UserProvidedDefaultConstructor);
5068 Record.push_back(Data.DeclaredSpecialMembers);
5069 Record.push_back(Data.ImplicitCopyConstructorHasConstParam);
5070 Record.push_back(Data.ImplicitCopyAssignmentHasConstParam);
5071 Record.push_back(Data.HasDeclaredCopyConstructorWithConstParam);
5072 Record.push_back(Data.HasDeclaredCopyAssignmentWithConstParam);
5073 Record.push_back(Data.FailedImplicitMoveConstructor);
5074 Record.push_back(Data.FailedImplicitMoveAssignment);
5077 Record.push_back(Data.NumBases);
5080 Record);
5083 Record.push_back(Data.NumVBases);
5086 Record);
5088 AddUnresolvedSet(Data.Conversions, Record);
5089 AddUnresolvedSet(Data.VisibleConversions, Record);
5091 AddDeclRef(D->getFirstFriend(), Record);
5096 Record.push_back(Lambda.Dependent);
5097 Record.push_back(Lambda.NumCaptures);
5098 Record.push_back(Lambda.NumExplicitCaptures);
5099 Record.push_back(Lambda.ManglingNumber);
5100 AddDeclRef(Lambda.ContextDecl, Record);
5101 AddTypeSourceInfo(Lambda.MethodTyInfo, Record);
5104 AddSourceLocation(Capture.getLocation(), Record);
5105 Record.push_back(Capture.isImplicit());
5106 Record.push_back(Capture.getCaptureKind());
5114 AddDeclRef(Var, Record);
5117 Record);
5122 AddDeclRef(Field, Record);
5238 UpdateRecord &Record = DeclUpdates[RD];
5239 Record.push_back(UPD_CXX_ADDED_IMPLICIT_MEMBER);
5240 Record.push_back(reinterpret_cast<uint64_t>(D));
5251 UpdateRecord &Record = DeclUpdates[TD];
5252 Record.push_back(UPD_CXX_ADDED_TEMPLATE_SPECIALIZATION);
5253 Record.push_back(reinterpret_cast<uint64_t>(D));
5264 UpdateRecord &Record = DeclUpdates[TD];
5265 Record.push_back(UPD_CXX_ADDED_TEMPLATE_SPECIALIZATION);
5266 Record.push_back(reinterpret_cast<uint64_t>(D));
5277 UpdateRecord &Record = DeclUpdates[TD];
5278 Record.push_back(UPD_CXX_ADDED_TEMPLATE_SPECIALIZATION);
5279 Record.push_back(reinterpret_cast<uint64_t>(D));
5288 UpdateRecord &Record = DeclUpdates[FD];
5289 Record.push_back(UPD_CXX_DEDUCED_RETURN_TYPE);
5290 Record.push_back(reinterpret_cast<uint64_t>(ReturnType.getAsOpaquePtr()));
5310 UpdateRecord &Record = DeclUpdates[D];
5311 Record.push_back(UPD_CXX_INSTANTIATED_STATIC_DATA_MEMBER);
5313 D->getMemberSpecializationInfo()->getPointOfInstantiation(), Record);