Home | History | Annotate | Download | only in Serialization

Lines Matching full:record

87     ASTWriter::RecordDataImpl &Record;
90 /// \brief Type code that corresponds to the record generated.
92 /// \brief Abbreviation to use for the record, if any.
95 ASTTypeWriter(ASTWriter &Writer, ASTWriter::RecordDataImpl &Record)
96 : Writer(Writer), Record(Record), Code(TYPE_EXT_QUAL) { }
113 Writer.AddTypeRef(T->getElementType(), Record);
118 Writer.AddTypeRef(T->getPointeeType(), Record);
123 Writer.AddTypeRef(T->getOriginalType(), Record);
128 Writer.AddTypeRef(T->getOriginalType(), Record);
129 Writer.AddTypeRef(T->getAdjustedType(), Record);
134 Writer.AddTypeRef(T->getPointeeType(), Record);
139 Writer.AddTypeRef(T->getPointeeTypeAsWritten(), Record);
140 Record.push_back(T->isSpelledAsLValue());
145 Writer.AddTypeRef(T->getPointeeTypeAsWritten(), Record);
150 Writer.AddTypeRef(T->getPointeeType(), Record);
151 Writer.AddTypeRef(QualType(T->getClass(), 0), Record);
156 Writer.AddTypeRef(T->getElementType(), Record);
157 Record.push_back(T->getSizeModifier()); // FIXME: stable values
158 Record.push_back(T->getIndexTypeCVRQualifiers()); // FIXME: stable values
163 Writer.AddAPInt(T->getSize(), Record);
174 Writer.AddSourceLocation(T->getLBracketLoc(), Record);
175 Writer.AddSourceLocation(T->getRBracketLoc(), Record);
181 Writer.AddTypeRef(T->getElementType(), Record);
182 Record.push_back(T->getNumElements());
183 Record.push_back(T->getVectorKind());
193 Writer.AddTypeRef(T->getReturnType(), Record);
195 Record.push_back(C.getNoReturn());
196 Record.push_back(C.getHasRegParm());
197 Record.push_back(C.getRegParm());
199 Record.push_back(C.getCC());
200 Record.push_back(C.getProducesResult());
212 ASTWriter::RecordDataImpl &Record) {
213 Record.push_back(T->getExceptionSpecType());
215 Record.push_back(T->getNumExceptions());
217 Writer.AddTypeRef(T->getExceptionType(I), Record);
221 Writer.AddDeclRef(T->getExceptionSpecDecl(), Record);
222 Writer.AddDeclRef(T->getExceptionSpecTemplate(), Record);
224 Writer.AddDeclRef(T->getExceptionSpecDecl(), Record);
231 Record.push_back(T->isVariadic());
232 Record.push_back(T->hasTrailingReturn());
233 Record.push_back(T->getTypeQuals());
234 Record.push_back(static_cast<unsigned>(T->getRefQualifier()));
235 addExceptionSpec(Writer, T, Record);
237 Record.push_back(T->getNumParams());
239 Writer.AddTypeRef(T->getParamType(I), Record);
249 Writer.AddDeclRef(T->getDecl(), Record);
254 Writer.AddDeclRef(T->getDecl(), Record);
256 Writer.AddTypeRef(T->getCanonicalTypeInternal(), Record);
266 Writer.AddTypeRef(T->getUnderlyingType(), Record);
271 Writer.AddTypeRef(T->getUnderlyingType(), Record);
277 Writer.AddTypeRef(T->getBaseType(), Record);
278 Writer.AddTypeRef(T->getUnderlyingType(), Record);
279 Record.push_back(T->getUTTKind());
284 Writer.AddTypeRef(T->getDeducedType(), Record);
285 Record.push_back((unsigned)T->getKeyword());
287 Record.push_back(T->isDependentType());
292 Record.push_back(T->isDependentType());
293 Writer.AddDeclRef(T->getDecl()->getCanonicalDecl(), Record);
309 Writer.AddTypeRef(T->getModifiedType(), Record);
310 Writer.AddTypeRef(T->getEquivalentType(), Record);
311 Record.push_back(T->getAttrKind());
318 Writer.AddTypeRef(QualType(T->getReplacedParameter(), 0), Record);
319 Writer.AddTypeRef(T->getReplacementType(), Record);
326 Writer.AddTypeRef(QualType(T->getReplacedParameter(), 0), Record);
327 Writer.AddTemplateArgument(T->getArgumentPack(), Record);
334 Record.push_back(T->isDependentType());
335 Writer.AddTemplateName(T->getTemplateName(), Record);
336 Record.push_back(T->getNumArgs());
338 Writer.AddTemplateArgument(ArgI, Record);
342 Record);
350 Writer.AddSourceRange(T->getBracketsRange(), Record);
363 Record.push_back(T->getDepth());
364 Record.push_back(T->getIndex());
365 Record.push_back(T->isParameterPack());
366 Writer.AddDeclRef(T->getDecl(), Record);
372 Record.push_back(T->getKeyword());
373 Writer.AddNestedNameSpecifier(T->getQualifier(), Record);
374 Writer.AddIdentifierRef(T->getIdentifier(), Record);
377 Record);
384 Record.push_back(T->getKeyword());
385 Writer.AddNestedNameSpecifier(T->getQualifier(), Record);
386 Writer.AddIdentifierRef(T->getIdentifier(), Record);
387 Record.push_back(T->getNumArgs());
389 Writer.AddTemplateArgument(I, Record);
394 Writer.AddTypeRef(T->getPattern(), Record);
396 Record.push_back(*NumExpansions + 1);
398 Record.push_back(0);
403 Writer.AddTypeRef(T->getInnerType(), Record);
408 Record.push_back(T->getKeyword());
409 Writer.AddNestedNameSpecifier(T->getQualifier(), Record);
410 Writer.AddTypeRef(T->getNamedType(), Record);
415 Writer.AddDeclRef(T->getDecl()->getCanonicalDecl(), Record);
416 Writer.AddTypeRef(T->getInjectedSpecializationType(), Record);
421 Writer.AddDeclRef(T->getDecl()->getCanonicalDecl(), Record);
426 Writer.AddTypeRef(T->getBaseType(), Record);
427 Record.push_back(T->getTypeArgsAsWritten().size());
429 Writer.AddTypeRef(TypeArg, Record);
430 Record.push_back(T->getNumProtocols());
432 Writer.AddDeclRef(I, Record);
433 Record.push_back(T->isKindOfTypeAsWritten());
439 Writer.AddTypeRef(T->getPointeeType(), Record);
445 Writer.AddTypeRef(T->getValueType(), Record);
453 ASTWriter::RecordDataImpl &Record;
456 TypeLocWriter(ASTWriter &Writer, ASTWriter::RecordDataImpl &Record)
457 : Writer(Writer), Record(Record) { }
474 Writer.AddSourceLocation(TL.getBuiltinLoc(), Record);
476 Record.push_back(TL.getWrittenTypeSpec());
477 Record.push_back(TL.getWrittenSignSpec());
478 Record.push_back(TL.getWrittenWidthSpec());
479 Record.push_back(TL.hasModeAttr());
483 Writer.AddSourceLocation(TL.getNameLoc(), Record);
486 Record);
495 Writer.AddSourceLocation(TL.getCaretLoc(), Record);
498 Writer.AddSourceLocation(TL.getAmpLoc(), Record);
501 Writer.AddSourceLocation(TL.getAmpAmpLoc(), Record);
504 Writer.AddSourceLocation(TL.getStarLoc(), Record);
505 Writer.AddTypeSourceInfo(TL.getClassTInfo(), Record);
508 Writer.AddSourceLocation(TL.getLBracketLoc(), Record);
509 Writer.AddSourceLocation(TL.getRBracketLoc(), Record);
510 Record.push_back(TL.getSizeExpr() ? 1 : 0);
529 Writer.AddSourceLocation(TL.getNameLoc(), Record);
532 Writer.AddSourceLocation(TL.getNameLoc(), Record);
535 Writer.AddSourceLocation(TL.getNameLoc(), Record);
538 Writer.AddSourceLocation(TL.getLocalRangeBegin(), Record);
539 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
540 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
541 Writer.AddSourceLocation(TL.getLocalRangeEnd(), Record);
543 Writer.AddDeclRef(TL.getParam(i), Record);
552 Writer.AddSourceLocation(TL.getNameLoc(), Record);
555 Writer.AddSourceLocation(TL.getNameLoc(), Record);
558 Writer.AddSourceLocation(TL.getTypeofLoc(), Record);
559 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
560 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
563 Writer.AddSourceLocation(TL.getTypeofLoc(), Record);
564 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
565 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
566 Writer.AddTypeSourceInfo(TL.getUnderlyingTInfo(), Record);
569 Writer.AddSourceLocation(TL.getNameLoc(), Record);
572 Writer.AddSourceLocation(TL.getKWLoc(), Record);
573 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
574 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
575 Writer.AddTypeSourceInfo(TL.getUnderlyingTInfo(), Record);
578 Writer.AddSourceLocation(TL.getNameLoc(), Record);
581 Writer.AddSourceLocation(TL.getNameLoc(), Record);
584 Writer.AddSourceLocation(TL.getNameLoc(), Record);
587 Writer.AddSourceLocation(TL.getAttrNameLoc(), Record);
590 Writer.AddSourceLocation(range.getBegin(), Record);
591 Writer.AddSourceLocation(range.getEnd(), Record);
595 Record.push_back(operand ? 1 : 0);
598 Writer.AddSourceLocation(TL.getAttrEnumOperandLoc(), Record);
602 Writer.AddSourceLocation(TL.getNameLoc(), Record);
606 Writer.AddSourceLocation(TL.getNameLoc(), Record);
610 Writer.AddSourceLocation(TL.getNameLoc(), Record);
614 Writer.AddSourceLocation(TL.getTemplateKeywordLoc(), Record);
615 Writer.AddSourceLocation(TL.getTemplateNameLoc(), Record);
616 Writer.AddSourceLocation(TL.getLAngleLoc(), Record);
617 Writer.AddSourceLocation(TL.getRAngleLoc(), Record);
620 TL.getArgLoc(i).getLocInfo(), Record);
623 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
624 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
627 Writer.AddSourceLocation(TL.getElaboratedKeywordLoc(), Record);
628 Writer.AddNestedNameSpecifierLoc(TL.getQualifierLoc(), Record);
631 Writer.AddSourceLocation(TL.getNameLoc(), Record);
634 Writer.AddSourceLocation(TL.getElaboratedKeywordLoc(), Record);
635 Writer.AddNestedNameSpecifierLoc(TL.getQualifierLoc(), Record);
636 Writer.AddSourceLocation(TL.getNameLoc(), Record);
640 Writer.AddSourceLocation(TL.getElaboratedKeywordLoc(), Record);
641 Writer.AddNestedNameSpecifierLoc(TL.getQualifierLoc(), Record);
642 Writer.AddSourceLocation(TL.getTemplateKeywordLoc(), Record);
643 Writer.AddSourceLocation(TL.getTemplateNameLoc(), Record);
644 Writer.AddSourceLocation(TL.getLAngleLoc(), Record);
645 Writer.AddSourceLocation(TL.getRAngleLoc(), Record);
648 TL.getArgLoc(I).getLocInfo(), Record);
651 Writer.AddSourceLocation(TL.getEllipsisLoc(), Record);
654 Writer.AddSourceLocation(TL.getNameLoc(), Record);
657 Record.push_back(TL.hasBaseTypeAsWritten());
658 Writer.AddSourceLocation(TL.getTypeArgsLAngleLoc(), Record);
659 Writer.AddSourceLocation(TL.getTypeArgsRAngleLoc(), Record);
661 Writer.AddTypeSourceInfo(TL.getTypeArgTInfo(i), Record);
662 Writer.AddSourceLocation(TL.getProtocolLAngleLoc(), Record);
663 Writer.AddSourceLocation(TL.getProtocolRAngleLoc(), Record);
665 Writer.AddSourceLocation(TL.getProtocolLoc(i), Record);
668 Writer.AddSourceLocation(TL.getStarLoc(), Record);
671 Writer.AddSourceLocation(TL.getKWLoc(), Record);
672 Writer.AddSourceLocation(TL.getLParenLoc(), Record);
673 Writer.AddSourceLocation(TL.getRParenLoc(), Record);
716 ASTWriter::RecordDataImpl &Record) {
717 Record.clear();
718 Record.push_back(ID);
719 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETBID, Record);
724 Record.clear();
726 Record.push_back(*Name++);
727 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_BLOCKNAME, Record);
732 ASTWriter::RecordDataImpl &Record) {
733 Record.clear();
734 Record.push_back(ID);
736 Record.push_back(*Name++);
737 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETRECORDNAME, Record);
741 ASTWriter::RecordDataImpl &Record) {
742 #define RECORD(X) EmitRecordID(X, #X, Stream, Record)
743 RECORD(STMT_STOP);
744 RECORD(STMT_NULL_PTR);
745 RECORD(STMT_REF_PTR);
746 RECORD(STMT_NULL);
747 RECORD(STMT_COMPOUND);
748 RECORD(STMT_CASE);
749 RECORD(STMT_DEFAULT);
750 RECORD(STMT_LABEL);
751 RECORD(STMT_ATTRIBUTED);
752 RECORD(STMT_IF);
753 RECORD(STMT_SWITCH);
754 RECORD(STMT_WHILE);
755 RECORD(STMT_DO);
756 RECORD(STMT_FOR);
757 RECORD(STMT_GOTO);
758 RECORD(STMT_INDIRECT_GOTO);
759 RECORD(STMT_CONTINUE);
760 RECORD(STMT_BREAK);
761 RECORD(STMT_RETURN);
762 RECORD(STMT_DECL);
763 RECORD(STMT_GCCASM);
764 RECORD(STMT_MSASM);
765 RECORD(EXPR_PREDEFINED);
766 RECORD(EXPR_DECL_REF);
767 RECORD(EXPR_INTEGER_LITERAL);
768 RECORD(EXPR_FLOATING_LITERAL);
769 RECORD(EXPR_IMAGINARY_LITERAL);
770 RECORD(EXPR_STRING_LITERAL);
771 RECORD(EXPR_CHARACTER_LITERAL);
772 RECORD(EXPR_PAREN);
773 RECORD(EXPR_PAREN_LIST);
774 RECORD(EXPR_UNARY_OPERATOR);
775 RECORD(EXPR_SIZEOF_ALIGN_OF);
776 RECORD(EXPR_ARRAY_SUBSCRIPT);
777 RECORD(EXPR_CALL);
778 RECORD(EXPR_MEMBER);
779 RECORD(EXPR_BINARY_OPERATOR);
780 RECORD(EXPR_COMPOUND_ASSIGN_OPERATOR);
781 RECORD(EXPR_CONDITIONAL_OPERATOR);
782 RECORD(EXPR_IMPLICIT_CAST);
783 RECORD(EXPR_CSTYLE_CAST);
784 RECORD(EXPR_COMPOUND_LITERAL);
785 RECORD(EXPR_EXT_VECTOR_ELEMENT);
786 RECORD(EXPR_INIT_LIST);
787 RECORD(EXPR_DESIGNATED_INIT);
788 RECORD(EXPR_DESIGNATED_INIT_UPDATE);
789 RECORD(EXPR_IMPLICIT_VALUE_INIT);
790 RECORD(EXPR_NO_INIT);
791 RECORD(EXPR_VA_ARG);
792 RECORD(EXPR_ADDR_LABEL);
793 RECORD(EXPR_STMT);
794 RECORD(EXPR_CHOOSE);
795 RECORD(EXPR_GNU_NULL);
796 RECORD(EXPR_SHUFFLE_VECTOR);
797 RECORD(EXPR_BLOCK);
798 RECORD(EXPR_GENERIC_SELECTION);
799 RECORD(EXPR_OBJC_STRING_LITERAL);
800 RECORD(EXPR_OBJC_BOXED_EXPRESSION);
801 RECORD(EXPR_OBJC_ARRAY_LITERAL);
802 RECORD(EXPR_OBJC_DICTIONARY_LITERAL);
803 RECORD(EXPR_OBJC_ENCODE);
804 RECORD(EXPR_OBJC_SELECTOR_EXPR);
805 RECORD(EXPR_OBJC_PROTOCOL_EXPR);
806 RECORD(EXPR_OBJC_IVAR_REF_EXPR);
807 RECORD(EXPR_OBJC_PROPERTY_REF_EXPR);
808 RECORD(EXPR_OBJC_KVC_REF_EXPR);
809 RECORD(EXPR_OBJC_MESSAGE_EXPR);
810 RECORD(STMT_OBJC_FOR_COLLECTION);
811 RECORD(STMT_OBJC_CATCH);
812 RECORD(STMT_OBJC_FINALLY);
813 RECORD(STMT_OBJC_AT_TRY);
814 RECORD(STMT_OBJC_AT_SYNCHRONIZED);
815 RECORD(STMT_OBJC_AT_THROW);
816 RECORD(EXPR_OBJC_BOOL_LITERAL);
817 RECORD(STMT_CXX_CATCH);
818 RECORD(STMT_CXX_TRY);
819 RECORD(STMT_CXX_FOR_RANGE);
820 RECORD(EXPR_CXX_OPERATOR_CALL);
821 RECORD(EXPR_CXX_MEMBER_CALL);
822 RECORD(EXPR_CXX_CONSTRUCT);
823 RECORD(EXPR_CXX_TEMPORARY_OBJECT);
824 RECORD(EXPR_CXX_STATIC_CAST);
825 RECORD(EXPR_CXX_DYNAMIC_CAST);
826 RECORD(EXPR_CXX_REINTERPRET_CAST);
827 RECORD(EXPR_CXX_CONST_CAST);
828 RECORD(EXPR_CXX_FUNCTIONAL_CAST);
829 RECORD(EXPR_USER_DEFINED_LITERAL);
830 RECORD(EXPR_CXX_STD_INITIALIZER_LIST);
831 RECORD(EXPR_CXX_BOOL_LITERAL);
832 RECORD(EXPR_CXX_NULL_PTR_LITERAL);
833 RECORD(EXPR_CXX_TYPEID_EXPR);
834 RECORD(EXPR_CXX_TYPEID_TYPE);
835 RECORD(EXPR_CXX_THIS);
836 RECORD(EXPR_CXX_THROW);
837 RECORD(EXPR_CXX_DEFAULT_ARG);
838 RECORD(EXPR_CXX_DEFAULT_INIT);
839 RECORD(EXPR_CXX_BIND_TEMPORARY);
840 RECORD(EXPR_CXX_SCALAR_VALUE_INIT);
841 RECORD(EXPR_CXX_NEW);
842 RECORD(EXPR_CXX_DELETE);
843 RECORD(EXPR_CXX_PSEUDO_DESTRUCTOR);
844 RECORD(EXPR_EXPR_WITH_CLEANUPS);
845 RECORD(EXPR_CXX_DEPENDENT_SCOPE_MEMBER);
846 RECORD(EXPR_CXX_DEPENDENT_SCOPE_DECL_REF);
847 RECORD(EXPR_CXX_UNRESOLVED_CONSTRUCT);
848 RECORD(EXPR_CXX_UNRESOLVED_MEMBER);
849 RECORD(EXPR_CXX_UNRESOLVED_LOOKUP);
850 RECORD(EXPR_CXX_EXPRESSION_TRAIT);
851 RECORD(EXPR_CXX_NOEXCEPT);
852 RECORD(EXPR_OPAQUE_VALUE);
853 RECORD(EXPR_BINARY_CONDITIONAL_OPERATOR);
854 RECORD(EXPR_TYPE_TRAIT);
855 RECORD(EXPR_ARRAY_TYPE_TRAIT);
856 RECORD(EXPR_PACK_EXPANSION);
857 RECORD(EXPR_SIZEOF_PACK);
858 RECORD(EXPR_SUBST_NON_TYPE_TEMPLATE_PARM);
859 RECORD(EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK);
860 RECORD(EXPR_FUNCTION_PARM_PACK);
861 RECORD(EXPR_MATERIALIZE_TEMPORARY);
862 RECORD(EXPR_CUDA_KERNEL_CALL);
863 RECORD(EXPR_CXX_UUIDOF_EXPR);
864 RECORD(EXPR_CXX_UUIDOF_TYPE);
865 RECORD(EXPR_LAMBDA);
866 #undef RECORD
870 RecordData Record;
873 #define BLOCK(X) EmitBlockID(X ## _ID, #X, Stream, Record)
874 #define RECORD(X) EmitRecordID(X, #X, Stream, Record)
878 RECORD(METADATA);
879 RECORD(SIGNATURE);
880 RECORD(MODULE_NAME);
881 RECORD(MODULE_DIRECTORY);
882 RECORD(MODULE_MAP_FILE);
883 RECORD(IMPORTS);
884 RECORD(ORIGINAL_FILE);
885 RECORD(ORIGINAL_PCH_DIR);
886 RECORD(ORIGINAL_FILE_ID);
887 RECORD(INPUT_FILE_OFFSETS);
890 RECORD(LANGUAGE_OPTIONS);
891 RECORD(TARGET_OPTIONS);
892 RECORD(DIAGNOSTIC_OPTIONS);
893 RECORD(FILE_SYSTEM_OPTIONS);
894 RECORD(HEADER_SEARCH_OPTIONS);
895 RECORD(PREPROCESSOR_OPTIONS);
898 RECORD(INPUT_FILE);
902 RECORD(TYPE_OFFSET);
903 RECORD(DECL_OFFSET);
904 RECORD(IDENTIFIER_OFFSET);
905 RECORD(IDENTIFIER_TABLE);
906 RECORD(EAGERLY_DESERIALIZED_DECLS);
907 RECORD(SPECIAL_TYPES);
908 RECORD(STATISTICS);
909 RECORD(TENTATIVE_DEFINITIONS);
910 RECORD(SELECTOR_OFFSETS);
911 RECORD(METHOD_POOL);
912 RECORD(PP_COUNTER_VALUE);
913 RECORD(SOURCE_LOCATION_OFFSETS);
914 RECORD(SOURCE_LOCATION_PRELOADS);
915 RECORD(EXT_VECTOR_DECLS);
916 RECORD(UNUSED_FILESCOPED_DECLS);
917 RECORD(PPD_ENTITIES_OFFSETS);
918 RECORD(VTABLE_USES);
919 RECORD(REFERENCED_SELECTOR_POOL);
920 RECORD
921 RECORD(SEMA_DECL_REFS);
922 RECORD(WEAK_UNDECLARED_IDENTIFIERS);
923 RECORD(PENDING_IMPLICIT_INSTANTIATIONS);
924 RECORD(DECL_REPLACEMENTS);
925 RECORD(UPDATE_VISIBLE);
926 RECORD(DECL_UPDATE_OFFSETS);
927 RECORD(DECL_UPDATES);
928 RECORD(CXX_BASE_SPECIFIER_OFFSETS);
929 RECORD(DIAG_PRAGMA_MAPPINGS);
930 RECORD(CUDA_SPECIAL_DECL_REFS);
931 RECORD(HEADER_SEARCH_TABLE);
932 RECORD(FP_PRAGMA_OPTIONS);
933 RECORD(OPENCL_EXTENSIONS);
934 RECORD(DELEGATING_CTORS);
935 RECORD(KNOWN_NAMESPACES);
936 RECORD(MODULE_OFFSET_MAP);
937 RECORD(SOURCE_MANAGER_LINE_TABLE);
938 RECORD(OBJC_CATEGORIES_MAP);
939 RECORD(FILE_SORTED_DECLS);
940 RECORD(IMPORTED_MODULES);
941 RECORD(OBJC_CATEGORIES);
942 RECORD(MACRO_OFFSET);
943 RECORD(INTERESTING_IDENTIFIERS);
944 RECORD(UNDEFINED_BUT_USED);
945 RECORD(LATE_PARSED_TEMPLATE);
946 RECORD(OPTIMIZE_PRAGMA_OPTIONS);
947 RECORD(UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES);
948 RECORD(CXX_CTOR_INITIALIZERS_OFFSETS);
949 RECORD(DELETE_EXPRS_TO_ANALYZE);
953 RECORD(SM_SLOC_FILE_ENTRY);
954 RECORD(SM_SLOC_BUFFER_ENTRY);
955 RECORD(SM_SLOC_BUFFER_BLOB);
956 RECORD(SM_SLOC_EXPANSION_ENTRY);
960 RECORD(PP_MACRO_DIRECTIVE_HISTORY);
961 RECORD(PP_MACRO_FUNCTION_LIKE);
962 RECORD(PP_MACRO_OBJECT_LIKE);
963 RECORD(PP_MODULE_MACRO);
964 RECORD(PP_TOKEN);
968 RECORD(SUBMODULE_METADATA);
969 RECORD(SUBMODULE_DEFINITION);
970 RECORD(SUBMODULE_UMBRELLA_HEADER);
971 RECORD(SUBMODULE_HEADER);
972 RECORD(SUBMODULE_TOPHEADER);
973 RECORD(SUBMODULE_UMBRELLA_DIR);
974 RECORD(SUBMODULE_IMPORTS);
975 RECORD(SUBMODULE_EXPORTS);
976 RECORD(SUBMODULE_REQUIRES);
977 RECORD(SUBMODULE_EXCLUDED_HEADER);
978 RECORD(SUBMODULE_LINK_LIBRARY);
979 RECORD(SUBMODULE_CONFIG_MACRO);
980 RECORD(SUBMODULE_CONFLICT);
981 RECORD(SUBMODULE_PRIVATE_HEADER);
982 RECORD(SUBMODULE_TEXTUAL_HEADER);
983 RECORD(SUBMODULE_PRIVATE_TEXTUAL_HEADER);
987 RECORD(COMMENTS_RAW_COMMENT);
991 RECORD(TYPE_EXT_QUAL);
992 RECORD(TYPE_COMPLEX);
993 RECORD(TYPE_POINTER);
994 RECORD(TYPE_BLOCK_POINTER);
995 RECORD(TYPE_LVALUE_REFERENCE);
996 RECORD(TYPE_RVALUE_REFERENCE);
997 RECORD(TYPE_MEMBER_POINTER);
998 RECORD(TYPE_CONSTANT_ARRAY);
999 RECORD(TYPE_INCOMPLETE_ARRAY);
1000 RECORD(TYPE_VARIABLE_ARRAY);
1001 RECORD(TYPE_VECTOR);
1002 RECORD(TYPE_EXT_VECTOR);
1003 RECORD(TYPE_FUNCTION_NO_PROTO);
1004 RECORD(TYPE_FUNCTION_PROTO);
1005 RECORD(TYPE_TYPEDEF);
1006 RECORD(TYPE_TYPEOF_EXPR);
1007 RECORD(TYPE_TYPEOF);
1008 RECORD(TYPE_RECORD);
1009 RECORD(TYPE_ENUM);
1010 RECORD(TYPE_OBJC_INTERFACE);
1011 RECORD(TYPE_OBJC_OBJECT_POINTER);
1012 RECORD(TYPE_DECLTYPE);
1013 RECORD(TYPE_ELABORATED);
1014 RECORD(TYPE_SUBST_TEMPLATE_TYPE_PARM);
1015 RECORD(TYPE_UNRESOLVED_USING);
1016 RECORD(TYPE_INJECTED_CLASS_NAME);
1017 RECORD(TYPE_OBJC_OBJECT);
1018 RECORD(TYPE_TEMPLATE_TYPE_PARM);
1019 RECORD(TYPE_TEMPLATE_SPECIALIZATION);
1020 RECORD(TYPE_DEPENDENT_NAME);
1021 RECORD(TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION);
1022 RECORD(TYPE_DEPENDENT_SIZED_ARRAY);
1023 RECORD(TYPE_PAREN);
1024 RECORD(TYPE_PACK_EXPANSION);
1025 RECORD(TYPE_ATTRIBUTED);
1026 RECORD(TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK);
1027 RECORD(TYPE_AUTO);
1028 RECORD(TYPE_UNARY_TRANSFORM);
1029 RECORD(TYPE_ATOMIC);
1030 RECORD(TYPE_DECAYED);
1031 RECORD(TYPE_ADJUSTED);
1032 RECORD(LOCAL_REDECLARATIONS);
1033 RECORD(DECL_TYPEDEF);
1034 RECORD(DECL_TYPEALIAS);
1035 RECORD(DECL_ENUM);
1036 RECORD(DECL_RECORD);
1037 RECORD(DECL_ENUM_CONSTANT);
1038 RECORD(DECL_FUNCTION);
1039 RECORD(DECL_OBJC_METHOD);
1040 RECORD(DECL_OBJC_INTERFACE);
1041 RECORD(DECL_OBJC_PROTOCOL);
1042 RECORD(DECL_OBJC_IVAR);
1043 RECORD(DECL_OBJC_AT_DEFS_FIELD);
1044 RECORD(DECL_OBJC_CATEGORY);
1045 RECORD(DECL_OBJC_CATEGORY_IMPL);
1046 RECORD(DECL_OBJC_IMPLEMENTATION);
1047 RECORD(DECL_OBJC_COMPATIBLE_ALIAS);
1048 RECORD(DECL_OBJC_PROPERTY);
1049 RECORD(DECL_OBJC_PROPERTY_IMPL);
1050 RECORD(DECL_FIELD);
1051 RECORD(DECL_MS_PROPERTY);
1052 RECORD(DECL_VAR);
1053 RECORD(DECL_IMPLICIT_PARAM);
1054 RECORD(DECL_PARM_VAR);
1055 RECORD(DECL_FILE_SCOPE_ASM);
1056 RECORD(DECL_BLOCK);
1057 RECORD(DECL_CONTEXT_LEXICAL);
1058 RECORD(DECL_CONTEXT_VISIBLE);
1059 RECORD(DECL_NAMESPACE);
1060 RECORD(DECL_NAMESPACE_ALIAS);
1061 RECORD(DECL_USING);
1062 RECORD(DECL_USING_SHADOW);
1063 RECORD(DECL_USING_DIRECTIVE);
1064 RECORD(DECL_UNRESOLVED_USING_VALUE);
1065 RECORD(DECL_UNRESOLVED_USING_TYPENAME);
1066 RECORD(DECL_LINKAGE_SPEC);
1067 RECORD(DECL_CXX_RECORD);
1068 RECORD(DECL_CXX_METHOD);
1069 RECORD(DECL_CXX_CONSTRUCTOR);
1070 RECORD(DECL_CXX_DESTRUCTOR);
1071 RECORD(DECL_CXX_CONVERSION);
1072 RECORD(DECL_ACCESS_SPEC);
1073 RECORD(DECL_FRIEND);
1074 RECORD(DECL_FRIEND_TEMPLATE);
1075 RECORD(DECL_CLASS_TEMPLATE);
1076 RECORD(DECL_CLASS_TEMPLATE_SPECIALIZATION);
1077 RECORD(DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION);
1078 RECORD(DECL_VAR_TEMPLATE);
1079 RECORD(DECL_VAR_TEMPLATE_SPECIALIZATION);
1080 RECORD(DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION);
1081 RECORD(DECL_FUNCTION_TEMPLATE);
1082 RECORD(DECL_TEMPLATE_TYPE_PARM);
1083 RECORD(DECL_NON_TYPE_TEMPLATE_PARM);
1084 RECORD(DECL_TEMPLATE_TEMPLATE_PARM);
1085 RECORD(DECL_STATIC_ASSERT);
1086 RECORD(DECL_CXX_BASE_SPECIFIERS);
1087 RECORD(DECL_INDIRECTFIELD);
1088 RECORD(DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK);
1091 AddStmtsExprs(Stream, Record);
1094 RECORD(PPD_MACRO_EXPANSION);
1095 RECORD(PPD_MACRO_DEFINITION);
1096 RECORD(PPD_INCLUSION_DIRECTIVE);
1100 RECORD(EXTENSION_METADATA);
1102 #undef RECORD
1181 RecordData Record;
1198 RecordData::value_type Record[] = {METADATA, VERSION_MAJOR, VERSION_MINOR,
1202 Stream.EmitRecordWithBlob(MetadataAbbrevCode, Record,
1212 RecordData::value_type Record[] = {Signature};
1213 Stream.EmitRecord(SIGNATURE, Record);
1221 RecordData::value_type Record[] = {MODULE_NAME};
1222 Stream.EmitRecordWithBlob(AbbrevCode, Record, WritingModule->Name);
1242 RecordData::value_type Record[] = {MODULE_DIRECTORY};
1243 Stream.EmitRecordWithBlob(AbbrevCode, Record, BaseDir);
1255 Record.clear();
1260 AddPath(Map.getModuleMapFileForUniquing(WritingModule)->getName(), Record);
1265 Record.push_back(AdditionalModMaps->size());
1267 AddPath(F->getName(), Record);
1269 Record.push_back(0);
1272 Stream.EmitRecord(MODULE_MAP_FILE, Record);
1278 Record.clear();
1285 Record.push_back((unsigned)M->Kind); // FIXME: Stable encoding
1286 AddSourceLocation(M->ImportLoc, Record);
1287 Record.push_back(M->File->getSize());
1288 Record.push_back(getTimestampForOutput(M->File));
1289 Record.push_back(M->Signature);
1290 AddPath(M->FileName, Record);
1292 Stream.EmitRecord(IMPORTS, Record);
1299 Record.clear();
1302 Record.push_back(LangOpts.Name);
1304 Record.push_back(static_cast<unsigned>(LangOpts.get##Name()));
1307 Record.push_back(LangOpts.Sanitize.has(SanitizerKind::ID));
1310 Record.push_back(LangOpts.ModuleFeatures.size());
1312 AddString(Feature, Record);
1314 Record.push_back((unsigned) LangOpts.ObjCRuntime.getKind());
1315 AddVersionTuple(LangOpts.ObjCRuntime.getVersion(), Record);
1317 AddString(LangOpts.CurrentModule, Record);
1320 Record.push_back(LangOpts.CommentOpts.BlockCommandNames.size());
1322 AddString(I, Record);
1324 Record.push_back(LangOpts.CommentOpts.ParseAllComments);
1326 Stream.EmitRecord(LANGUAGE_OPTIONS, Record);
1329 Record.clear();
1332 AddString(TargetOpts.Triple, Record);
1333 AddString(TargetOpts.CPU, Record);
1334 AddString(TargetOpts.ABI, Record);
1335 Record.push_back(TargetOpts.FeaturesAsWritten.size());
1337 AddString(TargetOpts.FeaturesAsWritten[I], Record);
1339 Record.push_back(TargetOpts.Features.size());
1341 AddString(TargetOpts.Features[I], Record);
1343 Stream.EmitRecord(TARGET_OPTIONS, Record);
1346 Record.clear();
1349 #define DIAGOPT(Name, Bits, Default) Record.push_back(DiagOpts.Name);
1351 Record.push_back(static_cast<unsigned>(DiagOpts.get##Name()));
1353 Record.push_back(DiagOpts.Warnings.size());
1355 AddString(DiagOpts.Warnings[I], Record);
1356 Record.push_back(DiagOpts.Remarks.size());
1358 AddString(DiagOpts.Remarks[I], Record);
1361 Stream.EmitRecord(DIAGNOSTIC_OPTIONS, Record);
1364 Record.clear();
1367 AddString(FSOpts.WorkingDir, Record);
1368 Stream.EmitRecord(FILE_SYSTEM_OPTIONS, Record);
1371 Record.clear();
1374 AddString(HSOpts.Sysroot, Record);
1377 Record.push_back(HSOpts.UserEntries.size());
1380 AddString(Entry.Path, Record);
1381 Record.push_back(static_cast<unsigned>(Entry.Group));
1382 Record
1383 Record.push_back(Entry.IgnoreSysRoot);
1387 Record.push_back(HSOpts.SystemHeaderPrefixes.size());
1389 AddString(HSOpts.SystemHeaderPrefixes[I].Prefix, Record);
1390 Record.push_back(HSOpts.SystemHeaderPrefixes[I].IsSystemHeader);
1393 AddString(HSOpts.ResourceDir, Record);
1394 AddString(HSOpts.ModuleCachePath, Record);
1395 AddString(HSOpts.ModuleUserBuildPath, Record);
1396 Record.push_back(HSOpts.DisableModuleHash);
1397 Record.push_back(HSOpts.UseBuiltinIncludes);
1398 Record.push_back(HSOpts.UseStandardSystemIncludes);
1399 Record.push_back(HSOpts.UseStandardCXXIncludes);
1400 Record.push_back(HSOpts.UseLibcxx);
1402 AddString(PP.getHeaderSearchInfo().getModuleCachePath(), Record);
1403 Stream.EmitRecord(HEADER_SEARCH_OPTIONS, Record);
1406 Record.clear();
1410 Record.push_back(PPOpts.Macros.size());
1412 AddString(PPOpts.Macros[I].first, Record);
1413 Record.push_back(PPOpts.Macros[I].second);
1417 Record.push_back(PPOpts.Includes.size());
1419 AddString(PPOpts.Includes[I], Record);
1422 Record.push_back(PPOpts.MacroIncludes.size());
1424 AddString(PPOpts.MacroIncludes[I], Record);
1426 Record.push_back(PPOpts.UsePredefines);
1427 // Detailed record is important since it is used for the module cache hash.
1428 Record.push_back(PPOpts.DetailedRecord);
1429 AddString(PPOpts.ImplicitPCHInclude, Record);
1430 AddString(PPOpts.ImplicitPTHInclude, Record);
1431 Record.push_back(static_cast<unsigned>(PPOpts.ObjCXXARCStandardLibrary));
1432 Stream.EmitRecord(PREPROCESSOR_OPTIONS, Record);
1446 Record.clear();
1447 Record.push_back(ORIGINAL_FILE);
1448 Record.push_back(SM.getMainFileID().getOpaqueValue());
1449 EmitRecordWithPath(FileAbbrevCode, Record, MainFile->getName());
1452 Record.clear();
1453 Record.push_back(SM.getMainFileID().getOpaqueValue());
1454 Stream.EmitRecord(ORIGINAL_FILE_ID, Record);
1468 RecordData::value_type Record[] = {ORIGINAL_PCH_DIR};
1469 Stream.EmitRecordWithBlob(AbbrevCode, Record, origDir);
1540 // Record this entry's offset.
1550 RecordData::value_type Record[] = {
1558 EmitRecordWithPath(IFAbbrevCode, Record, Entry.File->getName());
1573 RecordData::value_type Record[] = {INPUT_FILE_OFFSETS,
1575 Stream.EmitRecordWithBlob(OffsetsAbbrevCode, Record, bytes(InputFileOffsets));
1735 // record of that fact.
1821 RecordData::value_type Record[] = {HEADER_SEARCH_TABLE, BucketOffset,
1824 Stream.EmitRecordWithBlob(TableAbbrev, Record, TableData);
1841 RecordData Record;
1864 // Record the offset of this source-location entry.
1867 // Figure out which record code to use.
1877 Record.clear();
1878 Record.push_back(Code);
1881 Record.push_back(SLoc->getOffset() - 2);
1884 Record.push_back(File.getIncludeLoc().getRawEncoding());
1885 Record.push_back(File.getFileCharacteristic()); // FIXME: stable encoding
1886 Record.push_back(File.hasLineDirectives());
1895 Record.push_back(InputFileIDs[Content->OrigEntry]);
1897 Record.push_back(File.NumCreatedFIDs);
1901 Record.push_back(FDI->second->FirstDeclIndex);
1902 Record.push_back(FDI->second->DeclIDs.size());
1904 Record.push_back(0);
1905 Record.push_back(0);
1908 Stream.EmitRecordWithAbbrev(SLocFileAbbrv, Record);
1911 RecordData::value_type Record[] = {SM_SLOC_BUFFER_BLOB};
1914 Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record,
1928 Stream.EmitRecordWithBlob(SLocBufferAbbrv, Record,
1930 RecordData::value_type Record[] = {SM_SLOC_BUFFER_BLOB};
1931 Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record,
1942 Record.push_back(Expansion.getSpellingLoc().getRawEncoding());
1943 Record.push_back(Expansion.getExpansionLocStart().getRawEncoding());
1944 Record.push_back(Expansion.isMacroArgExpansion() ? 0
1951 Record.push_back(NextOffset - SLoc->getOffset() - 1);
1952 Stream.EmitRecordWithAbbrev(SLocExpansionAbbrv, Record);
1972 RecordData::value_type Record[] = {
1975 Stream.EmitRecordWithBlob(SLocOffsetsAbbrev, Record,
1987 Record.clear();
1997 AddPath(LineTable.getFilename(LE.FilenameID), Record);
2000 Record.push_back(0);
2009 Record.push_back(L.first.ID);
2012 Record.push_back(L.second.size());
2014 Record.push_back(LE.FileOffset);
2015 Record.push_back(LE.LineNo);
2016 Record.push_back(FilenameMap[LE.FilenameID]);
2017 Record.push_back((unsigned)LE.FileKind);
2018 Record.push_back(LE.IncludeOffset);
2022 Stream.EmitRecord(SOURCE_MANAGER_LINE_TABLE, Record);
2055 RecordData Record;
2060 RecordData::value_type Record[] = {PP.getCounterValue()};
2061 Stream.EmitRecord(PP_COUNTER_VALUE, Record);
2101 AddSourceLocation(MD->getLocation(), Record);
2102 Record.push_back(MD->getKind());
2104 Record.push_back(getMacroRef(DefMD->getInfo(), Name));
2106 Record.push_back(VisMD->isPublic());
2119 // Emit a record indicating this submodule exports this macro.
2138 if (Record.empty() && !EmittedModuleMacros)
2142 Stream.EmitRecord(PP_MACRO_DIRECTIVE_HISTORY, Record);
2143 Record.clear();
2164 // Record the local offset of this macro.
2175 AddIdentifierRef(Name, Record);
2176 Record.push_back(inferSubmoduleIDFromLocation(MI->getDefinitionLoc()));
2177 AddSourceLocation(MI->getDefinitionLoc(), Record);
2178 AddSourceLocation(MI->getDefinitionEndLoc(), Record);
2179 Record.push_back(MI->isUsed());
2180 Record.push_back(MI->isUsedForHeaderGuard());
2187 Record.push_back(MI->isC99Varargs());
2188 Record.push_back(MI->isGNUVarargs());
2189 Record.push_back(MI->hasCommaPasting());
2190 Record.push_back(MI->getNumArgs());
2192 AddIdentifierRef(Arg, Record);
2195 // If we have a detailed preprocessing record, record the macro definition
2198 Record.push_back(MacroDefinitions[PPRec->findMacroDefinition(MI)]);
2200 Stream.EmitRecord(Code, Record);
2201 Record.clear();
2209 AddToken(Tok, Record);
2210 Stream.EmitRecord(PP_TOKEN, Record);
2211 Record.clear();
2229 RecordData::value_type Record[] = {MACRO_OFFSET, MacroOffsets.size(),
2231 Stream.EmitRecordWithBlob(MacroOffsetAbbrev, Record, bytes(MacroOffsets));
2244 // If the preprocessor has a preprocessing record, emit it.
2265 RecordData Record;
2270 Record.clear();
2276 // Record this macro definition's ID.
2279 AddIdentifierRef(MD->getName(), Record);
2280 Stream.EmitRecord(PPD_MACRO_DEFINITION, Record);
2285 Record.push_back(ME->isBuiltinMacro());
2287 AddIdentifierRef(ME->getName(), Record);
2289 Record.push_back(MacroDefinitions[ME->getDefinition()]);
2290 Stream.EmitRecord(PPD_MACRO_EXPANSION, Record);
2295 Record.push_back(PPD_INCLUSION_DIRECTIVE);
2296 Record.push_back(ID->getFileName().size());
2297 Record.push_back(ID->wasInQuotes());
2298 Record.push_back(static_cast<unsigned>(ID->getKind()));
2299 Record.push_back(ID->importedModule());
2306 Stream.EmitRecordWithBlob(InclusionAbbrev, Record, Buffer);
2314 // Write the offsets table for the preprocessing record.
2327 RecordData::value_type Record[] = {PPD_ENTITIES_OFFSETS,
2330 Stream.EmitRecordWithBlob(PPEOffsetAbbrev, Record,
2456 RecordData::value_type Record[] = {getNumberOfModules(WritingModule),
2459 Stream.EmitRecord(SUBMODULE_METADATA, Record);
2477 RecordData::value_type Record[] = {
2482 Stream.EmitRecordWithBlob(DefinitionAbbrev, Record, Mod->Name);
2487 RecordData::value_type Record[] = {SUBMODULE_REQUIRES, R.second};
2488 Stream.EmitRecordWithBlob(RequiresAbbrev, Record, R.first);
2493 RecordData::value_type Record[] = {SUBMODULE_UMBRELLA_HEADER};
2494 Stream.EmitRecordWithBlob(UmbrellaAbbrev, Record,
2497 RecordData::value_type Record[] = {SUBMODULE_UMBRELLA_DIR};
2498 Stream.EmitRecordWithBlob(UmbrellaDirAbbrev, Record,
2516 RecordData::value_type Record[] = {HL.RecordKind};
2518 Stream.EmitRecordWithBlob(HL.Abbrev, Record, H.NameAsWritten);
2524 RecordData::value_type Record[] = {SUBMODULE_TOPHEADER};
2526 Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record, H->getName());
2531 RecordData Record;
2533 Record.push_back(getSubmoduleID(I));
2534 Stream.EmitRecord(SUBMODULE_IMPORTS, Record);
2539 RecordData Record;
2543 Record.push_back(getSubmoduleID(E.getPointer()));
2544 Record.push_back(E.getInt());
2546 Stream.EmitRecord(SUBMODULE_EXPORTS, Record);
2555 RecordData::value_type Record[] = {SUBMODULE_LINK_LIBRARY,
2557 Stream.EmitRecordWithBlob(LinkLibraryAbbrev, Record, LL.Library);
2564 RecordData::value_type Record[] = {SUBMODULE_CONFLICT,
2566 Stream.EmitRecordWithBlob(ConflictAbbrev, Record, C.Message);
2571 RecordData::value_type Record[] = {SUBMODULE_CONFIG_MACRO};
2572 Stream.EmitRecordWithBlob(ConfigMacroAbbrev, Record, CM);
2619 RecordData Record;
2627 Record.push_back(point.Loc.getRawEncoding());
2629 Record.push_back(DiagStateID);
2635 Record.push_back(I.first);
2636 Record.push_back((unsigned)I.second.getSeverity());
2639 Record.push_back(-1); // mark the end of the diag/map pairs for this
2644 if (!Record.empty())
2645 Stream.EmitRecord(DIAG_PRAGMA_MAPPINGS, Record);
2662 RecordData::value_type Record[] = {CXX_CTOR_INITIALIZERS_OFFSETS,
2664 Stream.EmitRecordWithBlob(CtorInitializersOffsetAbbrev, Record,
2682 RecordData::value_type Record[] = {CXX_BASE_SPECIFIER_OFFSETS,
2684 Stream.EmitRecordWithBlob(BaseSpecifierOffsetAbbrev, Record,
2700 // Record the offset for this type.
2709 RecordData Record;
2712 ASTTypeWriter W(*this, Record);
2717 AddTypeRef(T.getLocalUnqualifiedType(), Record);
2718 Record.push_back(Qs.getAsOpaqueValue());
2732 // Emit the serialized record.
2733 Stream.EmitRecord(W.Code, Record, W.AbbrevToUse);
2761 RecordData::value_type Record[] = {DECL_CONTEXT_LEXICAL};
2762 Stream.EmitRecordWithBlob(DeclContextLexicalAbbrev, Record,
2778 RecordData::value_type Record[] = {TYPE_OFFSET, TypeOffsets.size(),
2780 Stream.EmitRecordWithBlob(TypeOffsetAbbrev, Record, bytes(TypeOffsets));
2791 RecordData::value_type Record[] = {DECL_OFFSET, DeclOffsets.size(),
2793 Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record, bytes(DeclOffsets));
2819 RecordData::value_type Record[] = {FILE_SORTED_DECLS,
2821 Stream.EmitRecordWithBlob(AbbrevCode, Record, bytes(FileGroupedDeclIDs));
2827 RecordData Record;
2829 Record.clear();
2830 AddSourceRange(I->getSourceRange(), Record);
2831 Record.push_back(I->getKind());
2832 Record.push_back(I->isTrailingComment());
2833 Record.push_back(I->isAlmostTrailingComment());
2834 Stream.EmitRecord(COMMENTS_RAW_COMMENT, Record);
3029 RecordData::value_type Record[] = {METHOD_POOL, BucketOffset,
3031 Stream.EmitRecordWithBlob(MethodPoolAbbrev, Record, MethodPool);
3044 RecordData::value_type Record[] = {
3047 Stream.EmitRecordWithBlob(SelectorOffsetAbbrev, Record,
3059 RecordData Record;
3067 AddSelectorRef(Sel, Record);
3068 AddSourceLocation(Loc, Record);
3070 Stream.EmitRecord(REFERENCED_SELECTOR_POOL, Record);
3193 // Record the location of the key data. This is used when generating
3317 RecordData::value_type Record[] = {IDENTIFIER_TABLE, BucketOffset};
3318 Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable);
3334 RecordData::value_type Record[] = {IDENTIFIER_OFFSET,
3337 Stream.EmitRecordWithBlob(IdentifierOffsetAbbrev, Record,
3677 // lookup results as an update record for it rather than including them
3687 // Note that we need to emit an update record for the primary context.
3752 RecordData::value_type Record[] = {DECL_CONTEXT_VISIBLE};
3753 Stream.EmitRecordWithBlob(DeclContextVisibleLookupAbbrev, Record,
3775 // update record; those are the only ones that will be checked on reload.
3780 RecordData::value_type Record[] = {UPDATE_VISIBLE, getDeclID(cast<Decl>(DC))};
3781 Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable);
3786 RecordData::value_type Record[] = {Opts.fp_contract};
3787 Stream.EmitRecord(FP_PRAGMA_OPTIONS, Record);
3796 RecordData Record;
3797 #define OPENCLEXT(nm) Record.push_back(Opts.nm);
3799 Stream.EmitRecord(OPENCL_EXTENSIONS, Record);
3827 // Record this interface -> category map.
3845 RecordData::value_type Record[] = {OBJC_CATEGORIES_MAP, CategoriesMap.size()};
3846 Stream.EmitRecordWithBlob(AbbrevID, Record,
3860 RecordData Record;
3864 AddDeclRef(FD, Record);
3865 AddDeclRef(LPT->D, Record);
3866 Record.push_back(LPT->Toks.size());
3869 AddToken(Tok, Record);
3872 Stream.EmitRecord(LATE_PARSED_TEMPLATE, Record);
3877 RecordData Record;
3879 AddSourceLocation(PragmaLoc, Record);
3880 Stream.EmitRecord(OPTIMIZE_PRAGMA_OPTIONS, Record);
3888 // Emit the metadata record abbreviation.
3898 // Emit the metadata record.
3899 RecordData Record;
3901 Record.push_back(EXTENSION_METADATA);
3902 Record.push_back(Metadata.MajorVersion);
3903 Record.push_back(Metadata.MinorVersion);
3904 Record.push_back(Metadata.BlockName.size());
3905 Record.push_back(Metadata.UserInfo.size());
3909 Stream.EmitRecordWithBlob(Abbrev, Record, Buffer);
3922 /// \brief Write a record containing the given attributes.
3924 RecordDataImpl &Record) {
3925 Record.push_back(Attrs.size());
3927 Record.push_back(A->getKind()); // FIXME: stable encoding, target attrs
3928 AddSourceRange(A->getRange(), Record);
3935 void ASTWriter::AddToken(const Token &Tok, RecordDataImpl &Record) {
3936 AddSourceLocation(Tok.getLocation(), Record);
3937 Record.push_back(Tok.getLength());
3941 AddIdentifierRef(Tok.getIdentifierInfo(), Record);
3943 Record.push_back(Tok.getKind());
3945 Record.push_back(Tok.getFlags());
3948 void ASTWriter::AddString(StringRef Str, RecordDataImpl &Record) {
3949 Record.push_back(Str.size());
3950 Record.insert(Record.end(), Str.begin(), Str.end());
3971 void ASTWriter::AddPath(StringRef Path, RecordDataImpl &Record) {
3974 AddString(FilePath, Record);
3977 void ASTWriter::EmitRecordWithPath(unsigned Abbrev, RecordDataRef Record,
3981 Stream.EmitRecordWithBlob(Abbrev, Record, FilePath);
3985 RecordDataImpl &Record) {
3986 Record.push_back(Version.getMajor());
3988 Record.push_back(*Minor + 1);
3990 Record.push_back(0);
3992 Record.push_back(*Subminor + 1);
3994 Record.push_back(0);
4012 // Don't record offsets for selectors that are also available in a different
4093 ASTWriter::RecordData &Record) {
4096 Writer.AddDeclRef(*I, Record);
4140 // Build a record containing all of the tentative definitions in this file, in
4141 // TentativeDefinitions order. Generally, this record will be empty for
4146 // Build a record containing all of the file scoped decls in this file.
4152 // Build a record containing all of the delegating constructors we still need
4171 // Build a record containing all of the ext_vector declarations.
4175 // Build a record containing all of the VTable uses information.
4185 // Build a record containing all of the UnusedLocalTypedefNameCandidates.
4190 // Build a record containing all of pending implicit instantiations.
4199 // Build a record containing some declaration references.
4211 // Build a record containing all of the known namespaces.
4218 // Build a record of all used, undefined objects that require definitions.
4228 // Build a record containing all delete-expressions that we would like to
4251 RecordData Record = {VERSION_MAJOR};
4252 Stream.EmitRecord(METADATA_OLD_FORMAT, Record);
4271 RecordData::value_type Record[] = {TU_UPDATE_LEXICAL};
4272 Stream.EmitRecordWithBlob(TuUpdateLexicalAbbrev, Record,
4292 ASTWriter::UpdateRecord &Record = DeclUpdates[TU];
4293 if (Record.empty())
4294 Record.push_back(DeclUpdate(UPD_CXX_ADDED_ANONYMOUS_NAMESPACE, NS));
4335 // Form the record of special types.
4401 RecordData::value_type Record[] = {MODULE_OFFSET_MAP};
4402 Stream.EmitRecordWithBlob(ModuleOffsetMapAbbrev, Record,
4453 // Write the record containing external, unnamed definitions.
4457 // Write the record containing tentative definitions.
4461 // Write the record containing unused file scoped decls.
4465 // Write the record containing weak undeclared identifiers.
4470 // Write the record containing ext_vector type names.
4474 // Write the record containing VTable uses information.
4478 // Write the record containing potentially unused local typedefs.
4483 // Write the record containing pending implicit instantiations.
4487 // Write the record containing declaration references of Sema.
4491 // Write the record containing CUDA-specific declaration references.
4560 RecordData::value_type Record[] = {
4562 Stream.EmitRecord(STATISTICS, Record);
4583 RecordData Record;
4587 Record.push_back(Kind);
4593 Record.push_back(GetDeclRef(Update.getDecl()));
4599 Record.pop_back();
4604 AddSourceLocation(Update.getLoc(), Record);
4610 AddCXXDefinitionData(RD, Record);
4611 Record.push_back(WriteDeclContextLexicalBlock(
4618 Record.push_back(MSInfo->getTemplateSpecializationKind());
4619 AddSourceLocation(MSInfo->getPointOfInstantiation(), Record);
4622 Record.push_back(Spec->getTemplateSpecializationKind());
4623 AddSourceLocation(Spec->getPointOfInstantiation(), Record);
4626 // specialization. If so, record which one.
4630 Record.push_back(true);
4631 AddDeclRef(PartialSpec, Record);
4633 Record);
4635 Record.push_back(false);
4638 Record.push_back(RD->getTagKind());
4639 AddSourceLocation(RD->getLocation(), Record);
4640 AddSourceLocation(RD->getLocStart(), Record);
4641 AddSourceLocation(RD->getRBraceLoc(), Record);
4644 Record.push_back(D->hasAttrs());
4645 if (Record.back())
4647 D->getAttrs().size()), Record);
4654 AddDeclRef(Update.getDecl(), Record);
4661 Record);
4665 Record.push_back(GetOrCreateTypeID(Update.getType()));
4673 Record.push_back(Update.getNumber());
4678 Record);
4682 Record.push_back(getSubmoduleID(Update.getModule()));
4686 WriteAttributes(llvm::makeArrayRef(Update.getAttr()), Record);
4693 Record.push_back(UPD_CXX_ADDED_FUNCTION_DEFINITION);
4694 Record.push_back(Def->isInlined());
4695 AddSourceLocation(Def->getInnerLocStart(), Record);
4696 AddFunctionDefinition(Def, Record);
4702 Stream.EmitRecord(DECL_UPDATES, Record);
4712 RecordData Record;
4714 Record.push_back(I.ID);
4715 Record.push_back(I.Offset);
4716 Record.push_back(I.Loc);
4718 Stream.EmitRecord(DECL_REPLACEMENTS, Record);
4721 void ASTWriter::AddSourceLocation(SourceLocation Loc, RecordDataImpl &Record) {
4722 Record.push_back(Loc.getRawEncoding());
4725 void ASTWriter::AddSourceRange(SourceRange Range, RecordDataImpl &Record) {
4726 AddSourceLocation(Range.getBegin(), Record);
4727 AddSourceLocation(Range.getEnd(), Record);
4730 void ASTWriter::AddAPInt(const llvm::APInt &Value, RecordDataImpl &Record) {
4731 Record.push_back(Value.getBitWidth());
4733 Record.append(Words, Words + Value.getNumWords());
4736 void ASTWriter::AddAPSInt(const llvm::APSInt &Value, RecordDataImpl &Record) {
4737 Record.push_back(Value.isUnsigned());
4738 AddAPInt(Value, Record);
4741 void ASTWriter::AddAPFloat(const llvm::APFloat &Value, RecordDataImpl &Record) {
4742 AddAPInt(Value.bitcastToAPInt(), Record);
4745 void ASTWriter::AddIdentifierRef(const IdentifierInfo *II, RecordDataImpl &Record) {
4746 Record.push_back(getIdentifierRef(II));
4787 void ASTWriter::AddSelectorRef(const Selector SelRef, RecordDataImpl &Record) {
4788 Record.push_back(getSelectorRef(SelRef));
4810 void ASTWriter::AddCXXTemporary(const CXXTemporary *Temp, RecordDataImpl &Record) {
4811 AddDeclRef(Temp->getDestructor(), Record);
4815 RecordDataImpl &Record) {
4819 Record.push_back(NextCXXCtorInitializersID++);
4824 RecordDataImpl &Record) {
4829 Record.push_back(NextCXXBaseSpecifiersID++);
4834 RecordDataImpl &Record) {
4840 AddTypeSourceInfo(Arg.getAsTypeSourceInfo(), Record);
4843 AddNestedNameSpecifierLoc(Arg.getTemplateQualifierLoc(), Record);
4844 AddSourceLocation(Arg.getTemplateNameLoc(), Record);
4847 AddNestedNameSpecifierLoc(Arg.getTemplateQualifierLoc(), Record);
4848 AddSourceLocation(Arg.getTemplateNameLoc(), Record);
4849 AddSourceLocation(Arg.getTemplateEllipsisLoc(), Record);
4862 RecordDataImpl &Record) {
4863 AddTemplateArgument(Arg.getArgument(), Record);
4868 Record.push_back(InfoHasSameExpr);
4873 Record);
4877 RecordDataImpl &Record) {
4879 AddTypeRef(QualType(), Record);
4883 AddTypeLoc(TInfo->getTypeLoc(), Record);
4886 void ASTWriter::AddTypeLoc(TypeLoc TL, RecordDataImpl &Record) {
4887 AddTypeRef(TL.getType(), Record);
4889 TypeLocWriter TLW(*this, Record);
4894 void ASTWriter::AddTypeRef(QualType T, RecordDataImpl &Record) {
4895 Record.push_back(GetOrCreateTypeID(T));
4934 void ASTWriter::AddDeclRef(const Decl *D, RecordDataImpl &Record) {
4935 Record.push_back(GetDeclRef(D));
5024 void ASTWriter::AddDeclarationName(DeclarationName Name, RecordDataImpl &Record) {
5026 Record.push_back(Name.getNameKind());
5029 AddIdentifierRef(Name.getAsIdentifierInfo(), Record);
5035 AddSelectorRef(Name.getObjCSelector(), Record);
5041 AddTypeRef(Name.getCXXNameType(), Record);
5045 Record.push_back(Name.getCXXOverloadedOperator());
5049 AddIdentifierRef(Name.getCXXLiteralIdentifier(), Record);
5080 DeclarationName Name, RecordDataImpl &Record) {
5085 AddTypeSourceInfo(DNLoc.NamedType.TInfo, Record);
5091 Record);
5094 Record);
5100 Record);
5113 RecordDataImpl &Record) {
5114 AddDeclarationName(NameInfo.getName(), Record);
5115 AddSourceLocation(NameInfo.getLoc(), Record);
5116 AddDeclarationNameLoc(NameInfo.getInfo(), NameInfo.getName(), Record);
5120 RecordDataImpl &Record) {
5121 AddNestedNameSpecifierLoc(Info.QualifierLoc, Record);
5122 Record.push_back(Info.NumTemplParamLists);
5124 AddTemplateParameterList(Info.TemplParamLists[i], Record);
5128 RecordDataImpl &Record) {
5139 Record.push_back(NestedNames.size());
5143 Record.push_back(Kind);
5146 AddIdentifierRef(NNS->getAsIdentifier(), Record);
5150 AddDeclRef(NNS->getAsNamespace(), Record);
5154 AddDeclRef(NNS->getAsNamespaceAlias(), Record);
5159 AddTypeRef(QualType(NNS->getAsType(), 0), Record);
5160 Record.push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate);
5168 AddDeclRef(NNS->getAsRecordDecl(), Record);
5175 RecordDataImpl &Record) {
5187 Record.push_back(NestedNames.size());
5192 Record.push_back(Kind);
5195 AddIdentifierRef(NNS.getNestedNameSpecifier()->getAsIdentifier(), Record);
5196 AddSourceRange(NNS.getLocalSourceRange(), Record);
5200 AddDeclRef(NNS.getNestedNameSpecifier()->getAsNamespace(), Record);
5201 AddSourceRange(NNS.getLocalSourceRange(), Record);
5205 AddDeclRef(NNS.getNestedNameSpecifier()->getAsNamespaceAlias(), Record);
5206 AddSourceRange(NNS.getLocalSourceRange(), Record);
5211 Record.push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate);
5212 AddTypeLoc(NNS.getTypeLoc(), Record);
5213 AddSourceLocation(NNS.getLocalSourceRange().getEnd(), Record);
5217 AddSourceLocation(NNS.getLocalSourceRange().getEnd(), Record);
5221 AddDeclRef(NNS.getNestedNameSpecifier()->getAsRecordDecl(), Record);
5222 AddSourceRange(NNS.getLocalSourceRange(), Record);
5228 void ASTWriter::AddTemplateName(TemplateName Name, RecordDataImpl &Record) {
5230 Record.push_back(Kind);
5233 AddDeclRef(Name.getAsTemplateDecl(), Record);
5238 Record.push_back(OvT->size());
5240 AddDeclRef(I, Record);
5246 AddNestedNameSpecifier(QualT->getQualifier(), Record);
5247 Record.push_back(QualT->hasTemplateKeyword());
5248 AddDeclRef(QualT->getTemplateDecl(), Record);
5254 AddNestedNameSpecifier(DepT->getQualifier(), Record);
5255 Record.push_back(DepT->isIdentifier());
5257 AddIdentifierRef(DepT->getIdentifier(), Record);
5259 Record.push_back(DepT->getOperator());
5266 AddDeclRef(subst->getParameter(), Record);
5267 AddTemplateName(subst->getReplacement(), Record);
5274 AddDeclRef(SubstPack->getParameterPack(), Record);
5275 AddTemplateArgument(SubstPack->getArgumentPack(), Record);
5282 RecordDataImpl &Record) {
5283 Record.push_back(Arg.getKind());
5288 AddTypeRef(Arg.getAsType(), Record);
5291 AddDeclRef(Arg.getAsDecl(), Record);
5292 AddTypeRef(Arg.getParamTypeForDecl(), Record);
5295 AddTypeRef(Arg.getNullPtrType(), Record);
5298 AddAPSInt(Arg.getAsIntegral(), Record);
5299 AddTypeRef(Arg.getIntegralType(), Record);
5302 AddTemplateName(Arg.getAsTemplateOrTemplatePattern(), Record);
5305 AddTemplateName(Arg.getAsTemplateOrTemplatePattern(), Record);
5307 Record.push_back(*NumExpansions + 1);
5309 Record.push_back(0);
5315 Record.push_back(Arg.pack_size());
5317 AddTemplateArgument(P, Record);
5324 RecordDataImpl &Record) {
5326 AddSourceLocation(TemplateParams->getTemplateLoc(), Record);
5327 AddSourceLocation(TemplateParams->getLAngleLoc(), Record);
5328 AddSourceLocation(TemplateParams->getRAngleLoc(), Record);
5329 Record.push_back(TemplateParams->size());
5331 AddDeclRef(P, Record);
5337 RecordDataImpl &Record) {
5339 Record.push_back(TemplateArgs->size());
5341 AddTemplateArgument(TemplateArgs->get(i), Record);
5346 (const ASTTemplateArgumentListInfo *ASTTemplArgList, RecordDataImpl &Record) {
5348 AddSourceLocation(ASTTemplArgList->LAngleLoc, Record);
5349 AddSourceLocation(ASTTemplArgList->RAngleLoc, Record);
5350 Record.push_back(ASTTemplArgList->NumTemplateArgs);
5353 AddTemplateArgumentLoc(TemplArgs[i], Record);
5357 ASTWriter::AddUnresolvedSet(const ASTUnresolvedSet &Set, RecordDataImpl &Record) {
5358 Record.push_back(Set.size());
5361 AddDeclRef(I.getDecl(), Record);
5362 Record.push_back(I.getAccess());
5367 RecordDataImpl &Record) {
5368 Record.push_back(Base.isVirtual());
5369 Record.push_back(Base.isBaseOfClass());
5370 Record.push_back(Base.getAccessSpecifierAsWritten());
5371 Record.push_back(Base.getInheritConstructors());
5372 AddTypeSourceInfo(Base.getTypeSourceInfo(), Record);
5373 AddSourceRange(Base.getSourceRange(), Record);
5376 Record);
5380 RecordData Record;
5383 Record.clear();
5385 // Record the offset of this base-specifier set.
5397 Record.push_back(BEnd - B);
5399 AddCXXBaseSpecifier(*B, Record);
5400 Stream.EmitRecord(serialization::DECL_CXX_BASE_SPECIFIERS, Record);
5414 RecordDataImpl &Record) {
5415 Record.push_back(NumCtorInitializers);
5420 Record.push_back(CTOR_INITIALIZER_BASE);
5421 AddTypeSourceInfo(Init->getTypeSourceInfo(), Record);
5422 Record.push_back(Init->isBaseVirtual());
5424 Record.push_back(CTOR_INITIALIZER_DELEGATING);
5425 AddTypeSourceInfo(Init->getTypeSourceInfo(), Record);
5427 Record.push_back(CTOR_INITIALIZER_MEMBER);
5428 AddDeclRef(Init->getMember(), Record);
5430 Record.push_back(CTOR_INITIALIZER_INDIRECT_MEMBER);
5431 AddDeclRef(Init->getIndirectMember(), Record);
5434 AddSourceLocation(Init->getMemberLocation(), Record);
5436 AddSourceLocation(Init->getLParenLoc(), Record);
5437 AddSourceLocation(Init->getRParenLoc(), Record);
5438 Record.push_back(Init->isWritten());
5440 Record.push_back(Init->getSourceOrder());
5442 Record.push_back(Init->getNumArrayIndices());
5444 AddDeclRef(Init->getArrayIndex(i), Record);
5450 RecordData Record;
5455 Record.clear();
5457 // Record the offset of this mem-initializer list.
5467 AddCXXCtorInitializers(Init.Inits.data(), Init.Inits.size(), Record);
5468 Stream.EmitRecord(serialization::DECL_CXX_CTOR_INITIALIZERS, Record);
5479 void ASTWriter::AddCXXDefinitionData(const CXXRecordDecl *D, RecordDataImpl &Record) {
5481 Record.push_back(Data.IsLambda);
5482 Record.push_back(Data.UserDeclaredConstructor);
5483 Record.push_back(Data.UserDeclaredSpecialMembers);
5484 Record.push_back(Data.Aggregate);
5485 Record.push_back(Data.PlainOldData);
5486 Record.push_back(Data.Empty);
5487 Record.push_back(Data.Polymorphic);
5488 Record.push_back(Data.Abstract);
5489 Record.push_back(Data.IsStandardLayout);
5490 Record.push_back(Data.HasNoNonEmptyBases);
5491 Record.push_back(Data.HasPrivateFields);
5492 Record.push_back(Data.HasProtectedFields);
5493 Record.push_back(Data.HasPublicFields);
5494 Record.push_back(Data.HasMutableFields);
5495 Record.push_back(Data.HasVariantMembers);
5496 Record.push_back(Data.HasOnlyCMembers);
5497 Record.push_back(Data.HasInClassInitializer);
5498 Record.push_back(Data.HasUninitializedReferenceMember);
5499 Record.push_back(Data.NeedOverloadResolutionForMoveConstructor);
5500 Record.push_back(Data.NeedOverloadResolutionForMoveAssignment);
5501 Record.push_back(Data.NeedOverloadResolutionForDestructor);
5502 Record.push_back(Data.DefaultedMoveConstructorIsDeleted);
5503 Record.push_back(Data.DefaultedMoveAssignmentIsDeleted);
5504 Record.push_back(Data.DefaultedDestructorIsDeleted);
5505 Record.push_back(Data.HasTrivialSpecialMembers);
5506 Record.push_back(Data.DeclaredNonTrivialSpecialMembers);
5507 Record.push_back(Data.HasIrrelevantDestructor);
5508 Record.push_back(Data.HasConstexprNonCopyMoveConstructor);
5509 Record.push_back(Data.DefaultedDefaultConstructorIsConstexpr);
5510 Record.push_back(Data.HasConstexprDefaultConstructor);
5511 Record.push_back(Data.HasNonLiteralTypeFieldsOrBases);
5512 Record.push_back(Data.ComputedVisibleConversions);
5513 Record.push_back(Data.UserProvidedDefaultConstructor);
5514 Record.push_back(Data.DeclaredSpecialMembers);
5515 Record.push_back(Data.ImplicitCopyConstructorHasConstParam);
5516 Record.push_back(Data.ImplicitCopyAssignmentHasConstParam);
5517 Record.push_back(Data.HasDeclaredCopyConstructorWithConstParam);
5518 Record.push_back(Data.HasDeclaredCopyAssignmentWithConstParam);
5521 Record.push_back(Data.NumBases);
5524 Record);
5527 Record.push_back(Data.NumVBases);
5530 Record);
5532 AddUnresolvedSet(Data.Conversions.get(*Context), Record);
5533 AddUnresolvedSet(Data.VisibleConversions.get(*Context), Record);
5535 AddDeclRef(D->getFirstFriend(), Record);
5540 Record.push_back(Lambda.Dependent);
5541 Record.push_back(Lambda.IsGenericLambda);
5542 Record.push_back(Lambda.CaptureDefault);
5543 Record.push_back(Lambda.NumCaptures);
5544 Record.push_back(Lambda.NumExplicitCaptures);
5545 Record.push_back(Lambda.ManglingNumber);
5546 AddDeclRef(Lambda.ContextDecl, Record);
5547 AddTypeSourceInfo(Lambda.MethodTyInfo, Record);
5550 AddSourceLocation(Capture.getLocation(), Record);
5551 Record.push_back(Capture.isImplicit());
5552 Record.push_back(Capture.getCaptureKind());
5561 AddDeclRef(Var, Record);
5564 Record);
5718 // chain, add an update record for it.
5809 const RecordDecl *Record) {
5811 if (!Record->isFromASTFile())
5813 DeclUpdates[Record].push_back(DeclUpdate(UPD_ADDED_ATTR_TO_RECORD, Attr));