Home | History | Annotate | Download | only in Serialization

Lines Matching defs:RECORD

88     ASTRecordWriter Record;
90 /// \brief Type code that corresponds to the record generated.
92 /// \brief Abbreviation to use for the record, if any.
96 ASTTypeWriter(ASTWriter &Writer, ASTWriter::RecordDataImpl &Record)
97 : Writer(Writer), Record(Writer, Record), Code((TypeCode)0), AbbrevToUse(0) { }
100 return Record.Emit(Code, AbbrevToUse);
106 Record.AddTypeRef(T.getLocalUnqualifiedType());
107 Record.push_back(Qs.getAsOpaqueValue());
137 Record.AddTypeRef(T->getElementType());
142 Record.AddTypeRef(T->getPointeeType());
147 Record.AddTypeRef(T->getOriginalType());
152 Record.AddTypeRef(T->getOriginalType());
153 Record.AddTypeRef(T->getAdjustedType());
158 Record.AddTypeRef(T->getPointeeType());
163 Record.AddTypeRef(T->getPointeeTypeAsWritten());
164 Record.push_back(T->isSpelledAsLValue());
169 Record.AddTypeRef(T->getPointeeTypeAsWritten());
174 Record.AddTypeRef(T->getPointeeType());
175 Record.AddTypeRef(QualType(T->getClass(), 0));
180 Record.AddTypeRef(T->getElementType());
181 Record.push_back(T->getSizeModifier()); // FIXME: stable values
182 Record.push_back(T->getIndexTypeCVRQualifiers()); // FIXME: stable values
187 Record.AddAPInt(T->getSize());
198 Record.AddSourceLocation(T->getLBracketLoc());
199 Record.AddSourceLocation(T->getRBracketLoc());
200 Record.AddStmt(T->getSizeExpr());
205 Record.AddTypeRef(T->getElementType());
206 Record.push_back(T->getNumElements());
207 Record.push_back(T->getVectorKind());
217 Record.AddTypeRef(T->getReturnType());
219 Record.push_back(C.getNoReturn());
220 Record.push_back(C.getHasRegParm());
221 Record.push_back(C.getRegParm());
223 Record.push_back(C.getCC());
224 Record.push_back(C.getProducesResult());
236 ASTRecordWriter &Record) {
237 Record.push_back(T->getExceptionSpecType());
239 Record.push_back(T->getNumExceptions());
241 Record.AddTypeRef(T->getExceptionType(I));
243 Record.AddStmt(T->getNoexceptExpr());
245 Record.AddDeclRef(T->getExceptionSpecDecl());
246 Record.AddDeclRef(T->getExceptionSpecTemplate());
248 Record.AddDeclRef(T->getExceptionSpecDecl());
255 Record.push_back(T->isVariadic());
256 Record.push_back(T->hasTrailingReturn());
257 Record.push_back(T->getTypeQuals());
258 Record.push_back(static_cast<unsigned>(T->getRefQualifier()));
259 addExceptionSpec(T, Record);
261 Record.push_back(T->getNumParams());
263 Record.AddTypeRef(T->getParamType(I));
267 Record.push_back(T->getExtParameterInfo(I).getOpaqueValue());
279 Record.AddDeclRef(T->getDecl());
284 Record.AddDeclRef(T->getDecl());
286 Record.AddTypeRef(T->getCanonicalTypeInternal());
291 Record.AddStmt(T->getUnderlyingExpr());
296 Record.AddTypeRef(T->getUnderlyingType());
301 Record.AddTypeRef(T->getUnderlyingType());
302 Record.AddStmt(T->getUnderlyingExpr());
307 Record.AddTypeRef(T->getBaseType());
308 Record.AddTypeRef(T->getUnderlyingType());
309 Record.push_back(T->getUTTKind());
314 Record.AddTypeRef(T->getDeducedType());
315 Record.push_back((unsigned)T->getKeyword());
317 Record.push_back(T->isDependentType());
322 Record.push_back(T->isDependentType());
323 Record.AddDeclRef(T->getDecl()->getCanonicalDecl());
339 Record.AddTypeRef(T->getModifiedType());
340 Record.AddTypeRef(T->getEquivalentType());
341 Record.push_back(T->getAttrKind());
348 Record.AddTypeRef(QualType(T->getReplacedParameter(), 0));
349 Record.AddTypeRef(T->getReplacementType());
356 Record.AddTypeRef(QualType(T->getReplacedParameter(), 0));
357 Record.AddTemplateArgument(T->getArgumentPack());
364 Record.push_back(T->isDependentType());
365 Record.AddTemplateName(T->getTemplateName());
366 Record.push_back(T->getNumArgs());
368 Record.AddTemplateArgument(ArgI);
369 Record.AddTypeRef(T->isTypeAlias() ? T->getAliasedType()
379 Record.AddStmt(T->getSizeExpr());
380 Record.AddSourceRange(T->getBracketsRange());
393 Record.push_back(T->getDepth());
394 Record.push_back(T->getIndex());
395 Record.push_back(T->isParameterPack());
396 Record.AddDeclRef(T->getDecl());
402 Record.push_back(T->getKeyword());
403 Record.AddNestedNameSpecifier(T->getQualifier());
404 Record.AddIdentifierRef(T->getIdentifier());
405 Record.AddTypeRef(
413 Record.push_back(T->getKeyword());
414 Record.AddNestedNameSpecifier(T->getQualifier());
415 Record.AddIdentifierRef(T->getIdentifier());
416 Record.push_back(T->getNumArgs());
418 Record.AddTemplateArgument(I);
423 Record.AddTypeRef(T->getPattern());
425 Record.push_back(*NumExpansions + 1);
427 Record.push_back(0);
432 Record.AddTypeRef(T->getInnerType());
437 Record.push_back(T->getKeyword());
438 Record.AddNestedNameSpecifier(T->getQualifier());
439 Record.AddTypeRef(T->getNamedType());
444 Record.AddDeclRef(T->getDecl()->getCanonicalDecl());
445 Record.AddTypeRef(T->getInjectedSpecializationType());
450 Record.AddDeclRef(T->getDecl()->getCanonicalDecl());
455 Record.AddTypeRef(T->getBaseType());
456 Record.push_back(T->getTypeArgsAsWritten().size());
458 Record.AddTypeRef(TypeArg);
459 Record.push_back(T->getNumProtocols());
461 Record.AddDeclRef(I);
462 Record.push_back(T->isKindOfTypeAsWritten());
468 Record.AddTypeRef(T->getPointeeType());
474 Record.AddTypeRef(T->getValueType());
480 Record.AddTypeRef(T->getElementType());
487 ASTRecordWriter &Record;
490 TypeLocWriter(ASTRecordWriter &Record)
491 : Record(Record) { }
508 Record.AddSourceLocation(TL.getBuiltinLoc());
510 Record.push_back(TL.getWrittenTypeSpec());
511 Record.push_back(TL.getWrittenSignSpec());
512 Record.push_back(TL.getWrittenWidthSpec());
513 Record.push_back(TL.hasModeAttr());
517 Record.AddSourceLocation(TL.getNameLoc());
520 Record.AddSourceLocation(TL.getStarLoc());
529 Record.AddSourceLocation(TL.getCaretLoc());
532 Record.AddSourceLocation(TL.getAmpLoc());
535 Record.AddSourceLocation(TL.getAmpAmpLoc());
538 Record.AddSourceLocation(TL.getStarLoc());
539 Record.AddTypeSourceInfo(TL.getClassTInfo());
542 Record.AddSourceLocation(TL.getLBracketLoc());
543 Record.AddSourceLocation(TL.getRBracketLoc());
544 Record.push_back(TL.getSizeExpr() ? 1 : 0);
546 Record.AddStmt(TL.getSizeExpr());
563 Record.AddSourceLocation(TL.getNameLoc());
566 Record.AddSourceLocation(TL.getNameLoc());
569 Record.AddSourceLocation(TL.getNameLoc());
572 Record.AddSourceLocation(TL.getLocalRangeBegin());
573 Record.AddSourceLocation(TL.getLParenLoc());
574 Record.AddSourceLocation(TL.getRParenLoc());
575 Record.AddSourceLocation(TL.getLocalRangeEnd());
577 Record.AddDeclRef(TL.getParam(i));
586 Record.AddSourceLocation(TL.getNameLoc());
589 Record.AddSourceLocation(TL.getNameLoc());
592 Record.AddSourceLocation(TL.getTypeofLoc());
593 Record.AddSourceLocation(TL.getLParenLoc());
594 Record.AddSourceLocation(TL.getRParenLoc());
597 Record.AddSourceLocation(TL.getTypeofLoc());
598 Record.AddSourceLocation(TL.getLParenLoc());
599 Record.AddSourceLocation(TL.getRParenLoc());
600 Record.AddTypeSourceInfo(TL.getUnderlyingTInfo());
603 Record.AddSourceLocation(TL.getNameLoc());
606 Record.AddSourceLocation(TL.getKWLoc());
607 Record.AddSourceLocation(TL.getLParenLoc());
608 Record.AddSourceLocation(TL.getRParenLoc());
609 Record.AddTypeSourceInfo(TL.getUnderlyingTInfo());
612 Record.AddSourceLocation(TL.getNameLoc());
615 Record.AddSourceLocation(TL.getNameLoc());
618 Record.AddSourceLocation(TL.getNameLoc());
621 Record.AddSourceLocation(TL.getAttrNameLoc());
624 Record.AddSourceLocation(range.getBegin());
625 Record.AddSourceLocation(range.getEnd());
629 Record.push_back(operand ? 1 : 0);
630 if (operand) Record.AddStmt(operand);
632 Record.AddSourceLocation(TL.getAttrEnumOperandLoc());
636 Record.AddSourceLocation(TL.getNameLoc());
640 Record.AddSourceLocation(TL.getNameLoc());
644 Record.AddSourceLocation(TL.getNameLoc());
648 Record.AddSourceLocation(TL.getTemplateKeywordLoc());
649 Record.AddSourceLocation(TL.getTemplateNameLoc());
650 Record.AddSourceLocation(TL.getLAngleLoc());
651 Record.AddSourceLocation(TL.getRAngleLoc());
653 Record.AddTemplateArgumentLocInfo(TL.getArgLoc(i).getArgument().getKind(),
657 Record.AddSourceLocation(TL.getLParenLoc());
658 Record.AddSourceLocation(TL.getRParenLoc());
661 Record.AddSourceLocation(TL.getElaboratedKeywordLoc());
662 Record.AddNestedNameSpecifierLoc(TL.getQualifierLoc());
665 Record.AddSourceLocation(TL.getNameLoc());
668 Record.AddSourceLocation(TL.getElaboratedKeywordLoc());
669 Record.AddNestedNameSpecifierLoc(TL.getQualifierLoc());
670 Record.AddSourceLocation(TL.getNameLoc());
674 Record.AddSourceLocation(TL.getElaboratedKeywordLoc());
675 Record.AddNestedNameSpecifierLoc(TL.getQualifierLoc());
676 Record.AddSourceLocation(TL.getTemplateKeywordLoc());
677 Record.AddSourceLocation(TL.getTemplateNameLoc());
678 Record.AddSourceLocation(TL.getLAngleLoc());
679 Record.AddSourceLocation(TL.getRAngleLoc());
681 Record.AddTemplateArgumentLocInfo(TL.getArgLoc(I).getArgument().getKind(),
685 Record.AddSourceLocation(TL.getEllipsisLoc());
688 Record.AddSourceLocation(TL.getNameLoc());
691 Record.push_back(TL.hasBaseTypeAsWritten());
692 Record.AddSourceLocation(TL.getTypeArgsLAngleLoc());
693 Record.AddSourceLocation(TL.getTypeArgsRAngleLoc());
695 Record.AddTypeSourceInfo(TL.getTypeArgTInfo(i));
696 Record.AddSourceLocation(TL.getProtocolLAngleLoc());
697 Record.AddSourceLocation(TL.getProtocolRAngleLoc());
699 Record.AddSourceLocation(TL.getProtocolLoc(i));
702 Record.AddSourceLocation(TL.getStarLoc());
705 Record.AddSourceLocation(TL.getKWLoc());
706 Record.AddSourceLocation(TL.getLParenLoc());
707 Record.AddSourceLocation(TL.getRParenLoc());
710 Record.AddSourceLocation(TL.getKWLoc());
753 ASTWriter::RecordDataImpl &Record) {
754 Record.clear();
755 Record.push_back(ID);
756 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETBID, Record);
761 Record.clear();
763 Record.push_back(*Name++);
764 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_BLOCKNAME, Record);
769 ASTWriter::RecordDataImpl &Record) {
770 Record.clear();
771 Record.push_back(ID);
773 Record.push_back(*Name++);
774 Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETRECORDNAME, Record);
778 ASTWriter::RecordDataImpl &Record) {
779 #define RECORD(X) EmitRecordID(X, #X, Stream, Record)
780 RECORD(STMT_STOP);
781 RECORD(STMT_NULL_PTR);
782 RECORD(STMT_REF_PTR);
783 RECORD(STMT_NULL);
784 RECORD(STMT_COMPOUND);
785 RECORD(STMT_CASE);
786 RECORD(STMT_DEFAULT);
787 RECORD(STMT_LABEL);
788 RECORD(STMT_ATTRIBUTED);
789 RECORD(STMT_IF);
790 RECORD(STMT_SWITCH);
791 RECORD(STMT_WHILE);
792 RECORD(STMT_DO);
793 RECORD(STMT_FOR);
794 RECORD(STMT_GOTO);
795 RECORD(STMT_INDIRECT_GOTO);
796 RECORD(STMT_CONTINUE);
797 RECORD(STMT_BREAK);
798 RECORD(STMT_RETURN);
799 RECORD(STMT_DECL);
800 RECORD(STMT_GCCASM);
801 RECORD(STMT_MSASM);
802 RECORD(EXPR_PREDEFINED);
803 RECORD(EXPR_DECL_REF);
804 RECORD(EXPR_INTEGER_LITERAL);
805 RECORD(EXPR_FLOATING_LITERAL);
806 RECORD(EXPR_IMAGINARY_LITERAL);
807 RECORD(EXPR_STRING_LITERAL);
808 RECORD(EXPR_CHARACTER_LITERAL);
809 RECORD(EXPR_PAREN);
810 RECORD(EXPR_PAREN_LIST);
811 RECORD(EXPR_UNARY_OPERATOR);
812 RECORD(EXPR_SIZEOF_ALIGN_OF);
813 RECORD(EXPR_ARRAY_SUBSCRIPT);
814 RECORD(EXPR_CALL);
815 RECORD(EXPR_MEMBER);
816 RECORD(EXPR_BINARY_OPERATOR);
817 RECORD(EXPR_COMPOUND_ASSIGN_OPERATOR);
818 RECORD(EXPR_CONDITIONAL_OPERATOR);
819 RECORD(EXPR_IMPLICIT_CAST);
820 RECORD(EXPR_CSTYLE_CAST);
821 RECORD(EXPR_COMPOUND_LITERAL);
822 RECORD(EXPR_EXT_VECTOR_ELEMENT);
823 RECORD(EXPR_INIT_LIST);
824 RECORD(EXPR_DESIGNATED_INIT);
825 RECORD(EXPR_DESIGNATED_INIT_UPDATE);
826 RECORD(EXPR_IMPLICIT_VALUE_INIT);
827 RECORD(EXPR_NO_INIT);
828 RECORD(EXPR_VA_ARG);
829 RECORD(EXPR_ADDR_LABEL);
830 RECORD(EXPR_STMT);
831 RECORD(EXPR_CHOOSE);
832 RECORD(EXPR_GNU_NULL);
833 RECORD(EXPR_SHUFFLE_VECTOR);
834 RECORD(EXPR_BLOCK);
835 RECORD(EXPR_GENERIC_SELECTION);
836 RECORD(EXPR_OBJC_STRING_LITERAL);
837 RECORD(EXPR_OBJC_BOXED_EXPRESSION);
838 RECORD(EXPR_OBJC_ARRAY_LITERAL);
839 RECORD(EXPR_OBJC_DICTIONARY_LITERAL);
840 RECORD(EXPR_OBJC_ENCODE);
841 RECORD(EXPR_OBJC_SELECTOR_EXPR);
842 RECORD(EXPR_OBJC_PROTOCOL_EXPR);
843 RECORD(EXPR_OBJC_IVAR_REF_EXPR);
844 RECORD(EXPR_OBJC_PROPERTY_REF_EXPR);
845 RECORD(EXPR_OBJC_KVC_REF_EXPR);
846 RECORD(EXPR_OBJC_MESSAGE_EXPR);
847 RECORD(STMT_OBJC_FOR_COLLECTION);
848 RECORD(STMT_OBJC_CATCH);
849 RECORD(STMT_OBJC_FINALLY);
850 RECORD(STMT_OBJC_AT_TRY);
851 RECORD(STMT_OBJC_AT_SYNCHRONIZED);
852 RECORD(STMT_OBJC_AT_THROW);
853 RECORD(EXPR_OBJC_BOOL_LITERAL);
854 RECORD(STMT_CXX_CATCH);
855 RECORD(STMT_CXX_TRY);
856 RECORD(STMT_CXX_FOR_RANGE);
857 RECORD(EXPR_CXX_OPERATOR_CALL);
858 RECORD(EXPR_CXX_MEMBER_CALL);
859 RECORD(EXPR_CXX_CONSTRUCT);
860 RECORD(EXPR_CXX_TEMPORARY_OBJECT);
861 RECORD(EXPR_CXX_STATIC_CAST);
862 RECORD(EXPR_CXX_DYNAMIC_CAST);
863 RECORD(EXPR_CXX_REINTERPRET_CAST);
864 RECORD(EXPR_CXX_CONST_CAST);
865 RECORD(EXPR_CXX_FUNCTIONAL_CAST);
866 RECORD(EXPR_USER_DEFINED_LITERAL);
867 RECORD(EXPR_CXX_STD_INITIALIZER_LIST);
868 RECORD(EXPR_CXX_BOOL_LITERAL);
869 RECORD(EXPR_CXX_NULL_PTR_LITERAL);
870 RECORD(EXPR_CXX_TYPEID_EXPR);
871 RECORD(EXPR_CXX_TYPEID_TYPE);
872 RECORD(EXPR_CXX_THIS);
873 RECORD(EXPR_CXX_THROW);
874 RECORD(EXPR_CXX_DEFAULT_ARG);
875 RECORD(EXPR_CXX_DEFAULT_INIT);
876 RECORD(EXPR_CXX_BIND_TEMPORARY);
877 RECORD(EXPR_CXX_SCALAR_VALUE_INIT);
878 RECORD(EXPR_CXX_NEW);
879 RECORD(EXPR_CXX_DELETE);
880 RECORD(EXPR_CXX_PSEUDO_DESTRUCTOR);
881 RECORD(EXPR_EXPR_WITH_CLEANUPS);
882 RECORD(EXPR_CXX_DEPENDENT_SCOPE_MEMBER);
883 RECORD(EXPR_CXX_DEPENDENT_SCOPE_DECL_REF);
884 RECORD(EXPR_CXX_UNRESOLVED_CONSTRUCT);
885 RECORD(EXPR_CXX_UNRESOLVED_MEMBER);
886 RECORD(EXPR_CXX_UNRESOLVED_LOOKUP);
887 RECORD(EXPR_CXX_EXPRESSION_TRAIT);
888 RECORD(EXPR_CXX_NOEXCEPT);
889 RECORD(EXPR_OPAQUE_VALUE);
890 RECORD(EXPR_BINARY_CONDITIONAL_OPERATOR);
891 RECORD(EXPR_TYPE_TRAIT);
892 RECORD(EXPR_ARRAY_TYPE_TRAIT);
893 RECORD(EXPR_PACK_EXPANSION);
894 RECORD(EXPR_SIZEOF_PACK);
895 RECORD(EXPR_SUBST_NON_TYPE_TEMPLATE_PARM);
896 RECORD(EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK);
897 RECORD(EXPR_FUNCTION_PARM_PACK);
898 RECORD(EXPR_MATERIALIZE_TEMPORARY);
899 RECORD(EXPR_CUDA_KERNEL_CALL);
900 RECORD(EXPR_CXX_UUIDOF_EXPR);
901 RECORD(EXPR_CXX_UUIDOF_TYPE);
902 RECORD(EXPR_LAMBDA);
903 #undef RECORD
907 RecordData Record;
910 #define BLOCK(X) EmitBlockID(X ## _ID, #X, Stream, Record)
911 #define RECORD(X) EmitRecordID(X, #X, Stream, Record)
915 RECORD(METADATA);
916 RECORD(SIGNATURE);
917 RECORD(MODULE_NAME);
918 RECORD(MODULE_DIRECTORY);
919 RECORD(MODULE_MAP_FILE);
920 RECORD(IMPORTS);
921 RECORD(ORIGINAL_FILE);
922 RECORD(ORIGINAL_PCH_DIR);
923 RECORD(ORIGINAL_FILE_ID);
924 RECORD(INPUT_FILE_OFFSETS);
927 RECORD(LANGUAGE_OPTIONS);
928 RECORD(TARGET_OPTIONS);
929 RECORD(DIAGNOSTIC_OPTIONS);
930 RECORD(FILE_SYSTEM_OPTIONS);
931 RECORD(HEADER_SEARCH_OPTIONS);
932 RECORD(PREPROCESSOR_OPTIONS);
935 RECORD(INPUT_FILE);
939 RECORD(TYPE_OFFSET);
940 RECORD(DECL_OFFSET);
941 RECORD(IDENTIFIER_OFFSET);
942 RECORD(IDENTIFIER_TABLE);
943 RECORD(EAGERLY_DESERIALIZED_DECLS);
944 RECORD(SPECIAL_TYPES);
945 RECORD(STATISTICS);
946 RECORD(TENTATIVE_DEFINITIONS);
947 RECORD(SELECTOR_OFFSETS);
948 RECORD(METHOD_POOL);
949 RECORD(PP_COUNTER_VALUE);
950 RECORD(SOURCE_LOCATION_OFFSETS);
951 RECORD(SOURCE_LOCATION_PRELOADS);
952 RECORD(EXT_VECTOR_DECLS);
953 RECORD(UNUSED_FILESCOPED_DECLS);
954 RECORD(PPD_ENTITIES_OFFSETS);
955 RECORD(VTABLE_USES);
956 RECORD(REFERENCED_SELECTOR_POOL);
957 RECORD(TU_UPDATE_LEXICAL);
958 RECORD(SEMA_DECL_REFS);
959 RECORD(WEAK_UNDECLARED_IDENTIFIERS);
960 RECORD(PENDING_IMPLICIT_INSTANTIATIONS);
961 RECORD(UPDATE_VISIBLE);
962 RECORD(DECL_UPDATE_OFFSETS);
963 RECORD(DECL_UPDATES);
964 RECORD(DIAG_PRAGMA_MAPPINGS);
965 RECORD(CUDA_SPECIAL_DECL_REFS);
966 RECORD(HEADER_SEARCH_TABLE);
967 RECORD(FP_PRAGMA_OPTIONS);
968 RECORD(OPENCL_EXTENSIONS);
969 RECORD(DELEGATING_CTORS);
970 RECORD(KNOWN_NAMESPACES);
971 RECORD(MODULE_OFFSET_MAP);
972 RECORD(SOURCE_MANAGER_LINE_TABLE);
973 RECORD(OBJC_CATEGORIES_MAP);
974 RECORD(FILE_SORTED_DECLS);
975 RECORD(IMPORTED_MODULES);
976 RECORD(OBJC_CATEGORIES);
977 RECORD(MACRO_OFFSET);
978 RECORD(INTERESTING_IDENTIFIERS);
979 RECORD(UNDEFINED_BUT_USED);
980 RECORD(LATE_PARSED_TEMPLATE);
981 RECORD(OPTIMIZE_PRAGMA_OPTIONS);
982 RECORD(MSSTRUCT_PRAGMA_OPTIONS);
983 RECORD(POINTERS_TO_MEMBERS_PRAGMA_OPTIONS);
984 RECORD(UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES);
985 RECORD(DELETE_EXPRS_TO_ANALYZE);
989 RECORD(SM_SLOC_FILE_ENTRY);
990 RECORD(SM_SLOC_BUFFER_ENTRY);
991 RECORD(SM_SLOC_BUFFER_BLOB);
992 RECORD(SM_SLOC_BUFFER_BLOB_COMPRESSED);
993 RECORD(SM_SLOC_EXPANSION_ENTRY);
997 RECORD(PP_MACRO_DIRECTIVE_HISTORY);
998 RECORD(PP_MACRO_FUNCTION_LIKE);
999 RECORD(PP_MACRO_OBJECT_LIKE);
1000 RECORD(PP_MODULE_MACRO);
1001 RECORD(PP_TOKEN);
1005 RECORD(SUBMODULE_METADATA);
1006 RECORD(SUBMODULE_DEFINITION);
1007 RECORD(SUBMODULE_UMBRELLA_HEADER);
1008 RECORD(SUBMODULE_HEADER);
1009 RECORD(SUBMODULE_TOPHEADER);
1010 RECORD(SUBMODULE_UMBRELLA_DIR);
1011 RECORD(SUBMODULE_IMPORTS);
1012 RECORD(SUBMODULE_EXPORTS);
1013 RECORD(SUBMODULE_REQUIRES);
1014 RECORD(SUBMODULE_EXCLUDED_HEADER);
1015 RECORD(SUBMODULE_LINK_LIBRARY);
1016 RECORD(SUBMODULE_CONFIG_MACRO);
1017 RECORD(SUBMODULE_CONFLICT);
1018 RECORD(SUBMODULE_PRIVATE_HEADER);
1019 RECORD(SUBMODULE_TEXTUAL_HEADER);
1020 RECORD(SUBMODULE_PRIVATE_TEXTUAL_HEADER);
1024 RECORD(COMMENTS_RAW_COMMENT);
1028 RECORD(TYPE_EXT_QUAL);
1029 RECORD(TYPE_COMPLEX);
1030 RECORD(TYPE_POINTER);
1031 RECORD(TYPE_BLOCK_POINTER);
1032 RECORD(TYPE_LVALUE_REFERENCE);
1033 RECORD(TYPE_RVALUE_REFERENCE);
1034 RECORD(TYPE_MEMBER_POINTER);
1035 RECORD(TYPE_CONSTANT_ARRAY);
1036 RECORD(TYPE_INCOMPLETE_ARRAY);
1037 RECORD(TYPE_VARIABLE_ARRAY);
1038 RECORD(TYPE_VECTOR);
1039 RECORD(TYPE_EXT_VECTOR);
1040 RECORD(TYPE_FUNCTION_NO_PROTO);
1041 RECORD(TYPE_FUNCTION_PROTO);
1042 RECORD(TYPE_TYPEDEF);
1043 RECORD(TYPE_TYPEOF_EXPR);
1044 RECORD(TYPE_TYPEOF);
1045 RECORD(TYPE_RECORD);
1046 RECORD(TYPE_ENUM);
1047 RECORD(TYPE_OBJC_INTERFACE);
1048 RECORD(TYPE_OBJC_OBJECT_POINTER);
1049 RECORD(TYPE_DECLTYPE);
1050 RECORD(TYPE_ELABORATED);
1051 RECORD(TYPE_SUBST_TEMPLATE_TYPE_PARM);
1052 RECORD(TYPE_UNRESOLVED_USING);
1053 RECORD(TYPE_INJECTED_CLASS_NAME);
1054 RECORD(TYPE_OBJC_OBJECT);
1055 RECORD(TYPE_TEMPLATE_TYPE_PARM);
1056 RECORD(TYPE_TEMPLATE_SPECIALIZATION);
1057 RECORD(TYPE_DEPENDENT_NAME);
1058 RECORD(TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION);
1059 RECORD(TYPE_DEPENDENT_SIZED_ARRAY);
1060 RECORD(TYPE_PAREN);
1061 RECORD(TYPE_PACK_EXPANSION);
1062 RECORD(TYPE_ATTRIBUTED);
1063 RECORD(TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK);
1064 RECORD(TYPE_AUTO);
1065 RECORD(TYPE_UNARY_TRANSFORM);
1066 RECORD(TYPE_ATOMIC);
1067 RECORD(TYPE_DECAYED);
1068 RECORD(TYPE_ADJUSTED);
1069 RECORD(LOCAL_REDECLARATIONS);
1070 RECORD(DECL_TYPEDEF);
1071 RECORD(DECL_TYPEALIAS);
1072 RECORD(DECL_ENUM);
1073 RECORD(DECL_RECORD);
1074 RECORD(DECL_ENUM_CONSTANT);
1075 RECORD(DECL_FUNCTION);
1076 RECORD(DECL_OBJC_METHOD);
1077 RECORD(DECL_OBJC_INTERFACE);
1078 RECORD(DECL_OBJC_PROTOCOL);
1079 RECORD(DECL_OBJC_IVAR);
1080 RECORD(DECL_OBJC_AT_DEFS_FIELD);
1081 RECORD(DECL_OBJC_CATEGORY);
1082 RECORD(DECL_OBJC_CATEGORY_IMPL);
1083 RECORD(DECL_OBJC_IMPLEMENTATION);
1084 RECORD(DECL_OBJC_COMPATIBLE_ALIAS);
1085 RECORD(DECL_OBJC_PROPERTY);
1086 RECORD(DECL_OBJC_PROPERTY_IMPL);
1087 RECORD(DECL_FIELD);
1088 RECORD(DECL_MS_PROPERTY);
1089 RECORD(DECL_VAR);
1090 RECORD(DECL_IMPLICIT_PARAM);
1091 RECORD(DECL_PARM_VAR);
1092 RECORD(DECL_FILE_SCOPE_ASM);
1093 RECORD(DECL_BLOCK);
1094 RECORD(DECL_CONTEXT_LEXICAL);
1095 RECORD(DECL_CONTEXT_VISIBLE);
1096 RECORD(DECL_NAMESPACE);
1097 RECORD(DECL_NAMESPACE_ALIAS);
1098 RECORD(DECL_USING);
1099 RECORD(DECL_USING_SHADOW);
1100 RECORD(DECL_USING_DIRECTIVE);
1101 RECORD(DECL_UNRESOLVED_USING_VALUE);
1102 RECORD(DECL_UNRESOLVED_USING_TYPENAME);
1103 RECORD(DECL_LINKAGE_SPEC);
1104 RECORD(DECL_CXX_RECORD);
1105 RECORD(DECL_CXX_METHOD);
1106 RECORD(DECL_CXX_CONSTRUCTOR);
1107 RECORD(DECL_CXX_INHERITED_CONSTRUCTOR);
1108 RECORD(DECL_CXX_DESTRUCTOR);
1109 RECORD(DECL_CXX_CONVERSION);
1110 RECORD(DECL_ACCESS_SPEC);
1111 RECORD(DECL_FRIEND);
1112 RECORD(DECL_FRIEND_TEMPLATE);
1113 RECORD(DECL_CLASS_TEMPLATE);
1114 RECORD(DECL_CLASS_TEMPLATE_SPECIALIZATION);
1115 RECORD(DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION);
1116 RECORD(DECL_VAR_TEMPLATE);
1117 RECORD(DECL_VAR_TEMPLATE_SPECIALIZATION);
1118 RECORD(DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION);
1119 RECORD(DECL_FUNCTION_TEMPLATE);
1120 RECORD(DECL_TEMPLATE_TYPE_PARM);
1121 RECORD(DECL_NON_TYPE_TEMPLATE_PARM);
1122 RECORD(DECL_TEMPLATE_TEMPLATE_PARM);
1123 RECORD(DECL_TYPE_ALIAS_TEMPLATE);
1124 RECORD(DECL_STATIC_ASSERT);
1125 RECORD(DECL_CXX_BASE_SPECIFIERS);
1126 RECORD(DECL_CXX_CTOR_INITIALIZERS);
1127 RECORD(DECL_INDIRECTFIELD);
1128 RECORD(DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK);
1129 RECORD(DECL_EXPANDED_TEMPLATE_TEMPLATE_PARM_PACK);
1130 RECORD(DECL_CLASS_SCOPE_FUNCTION_SPECIALIZATION);
1131 RECORD(DECL_IMPORT);
1132 RECORD(DECL_OMP_THREADPRIVATE);
1133 RECORD(DECL_EMPTY);
1134 RECORD(DECL_OBJC_TYPE_PARAM);
1135 RECORD(DECL_OMP_CAPTUREDEXPR);
1136 RECORD(DECL_PRAGMA_COMMENT);
1137 RECORD(DECL_PRAGMA_DETECT_MISMATCH);
1138 RECORD(DECL_OMP_DECLARE_REDUCTION);
1141 AddStmtsExprs(Stream, Record);
1144 RECORD(PPD_MACRO_EXPANSION);
1145 RECORD(PPD_MACRO_DEFINITION);
1146 RECORD(PPD_INCLUSION_DIRECTIVE);
1150 RECORD(EXTENSION_METADATA);
1152 #undef RECORD
1231 RecordData Record;
1248 RecordData::value_type Record[] = {METADATA, VERSION_MAJOR, VERSION_MINOR,
1252 Stream.EmitRecordWithBlob(MetadataAbbrevCode, Record,
1262 RecordData::value_type Record[] = {Signature};
1263 Stream.EmitRecord(SIGNATURE, Record);
1271 RecordData::value_type Record[] = {MODULE_NAME};
1272 Stream.EmitRecordWithBlob(AbbrevCode, Record, WritingModule->Name);
1292 RecordData::value_type Record[] = {MODULE_DIRECTORY};
1293 Stream.EmitRecordWithBlob(AbbrevCode, Record, BaseDir);
1305 Record.clear();
1310 AddPath(Map.getModuleMapFileForUniquing(WritingModule)->getName(), Record);
1315 Record.push_back(AdditionalModMaps->size());
1317 AddPath(F->getName(), Record);
1319 Record.push_back(0);
1322 Stream.EmitRecord(MODULE_MAP_FILE, Record);
1328 Record.clear();
1335 Record.push_back((unsigned)M->Kind); // FIXME: Stable encoding
1336 AddSourceLocation(M->ImportLoc, Record);
1337 Record.push_back(M->File->getSize());
1338 Record.push_back(getTimestampForOutput(M->File));
1339 Record.push_back(M->Signature);
1340 AddPath(M->FileName, Record);
1342 Stream.EmitRecord(IMPORTS, Record);
1349 Record.clear();
1352 Record.push_back(LangOpts.Name);
1354 Record.push_back(static_cast<unsigned>(LangOpts.get##Name()));
1357 Record.push_back(LangOpts.Sanitize.has(SanitizerKind::ID));
1360 Record.push_back(LangOpts.ModuleFeatures.size());
1362 AddString(Feature, Record);
1364 Record.push_back((unsigned) LangOpts.ObjCRuntime.getKind());
1365 AddVersionTuple(LangOpts.ObjCRuntime.getVersion(), Record);
1367 AddString(LangOpts.CurrentModule, Record);
1370 Record.push_back(LangOpts.CommentOpts.BlockCommandNames.size());
1372 AddString(I, Record);
1374 Record.push_back(LangOpts.CommentOpts.ParseAllComments);
1377 Record.push_back(LangOpts.OMPTargetTriples.size());
1379 AddString(T.getTriple(), Record);
1381 AddString(LangOpts.OMPHostIRFile, Record);
1383 Stream.EmitRecord(LANGUAGE_OPTIONS, Record);
1386 Record.clear();
1389 AddString(TargetOpts.Triple, Record);
1390 AddString(TargetOpts.CPU, Record);
1391 AddString(TargetOpts.ABI, Record);
1392 Record.push_back(TargetOpts.FeaturesAsWritten.size());
1394 AddString(TargetOpts.FeaturesAsWritten[I], Record);
1396 Record.push_back(TargetOpts.Features.size());
1398 AddString(TargetOpts.Features[I], Record);
1400 Stream.EmitRecord(TARGET_OPTIONS, Record);
1403 Record.clear();
1406 #define DIAGOPT(Name, Bits, Default) Record.push_back(DiagOpts.Name);
1408 Record.push_back(static_cast<unsigned>(DiagOpts.get##Name()));
1410 Record.push_back(DiagOpts.Warnings.size());
1412 AddString(DiagOpts.Warnings[I], Record);
1413 Record.push_back(DiagOpts.Remarks.size());
1415 AddString(DiagOpts.Remarks[I], Record);
1418 Stream.EmitRecord(DIAGNOSTIC_OPTIONS, Record);
1421 Record.clear();
1424 AddString(FSOpts.WorkingDir, Record);
1425 Stream.EmitRecord(FILE_SYSTEM_OPTIONS, Record);
1428 Record.clear();
1431 AddString(HSOpts.Sysroot, Record);
1434 Record.push_back(HSOpts.UserEntries.size());
1437 AddString(Entry.Path, Record);
1438 Record.push_back(static_cast<unsigned>(Entry.Group));
1439 Record.push_back(Entry.IsFramework);
1440 Record.push_back(Entry.IgnoreSysRoot);
1444 Record.push_back(HSOpts.SystemHeaderPrefixes.size());
1446 AddString(HSOpts.SystemHeaderPrefixes[I].Prefix, Record);
1447 Record.push_back(HSOpts.SystemHeaderPrefixes[I].IsSystemHeader);
1450 AddString(HSOpts.ResourceDir, Record);
1451 AddString(HSOpts.ModuleCachePath, Record);
1452 AddString(HSOpts.ModuleUserBuildPath, Record);
1453 Record.push_back(HSOpts.DisableModuleHash);
1454 Record.push_back(HSOpts.UseBuiltinIncludes);
1455 Record.push_back(HSOpts.UseStandardSystemIncludes);
1456 Record.push_back(HSOpts.UseStandardCXXIncludes);
1457 Record.push_back(HSOpts.UseLibcxx);
1459 AddString(PP.getHeaderSearchInfo().getModuleCachePath(), Record);
1460 Stream.EmitRecord(HEADER_SEARCH_OPTIONS, Record);
1463 Record.clear();
1467 Record.push_back(PPOpts.Macros.size());
1469 AddString(PPOpts.Macros[I].first, Record);
1470 Record.push_back(PPOpts.Macros[I].second);
1474 Record.push_back(PPOpts.Includes.size());
1476 AddString(PPOpts.Includes[I], Record);
1479 Record.push_back(PPOpts.MacroIncludes.size());
1481 AddString(PPOpts.MacroIncludes[I], Record);
1483 Record.push_back(PPOpts.UsePredefines);
1484 // Detailed record is important since it is used for the module cache hash.
1485 Record.push_back(PPOpts.DetailedRecord);
1486 AddString(PPOpts.ImplicitPCHInclude, Record);
1487 AddString(PPOpts.ImplicitPTHInclude, Record);
1488 Record.push_back(static_cast<unsigned>(PPOpts.ObjCXXARCStandardLibrary));
1489 Stream.EmitRecord(PREPROCESSOR_OPTIONS, Record);
1503 Record.clear();
1504 Record.push_back(ORIGINAL_FILE);
1505 Record.push_back(SM.getMainFileID().getOpaqueValue());
1506 EmitRecordWithPath(FileAbbrevCode, Record, MainFile->getName());
1509 Record.clear();
1510 Record.push_back(SM.getMainFileID().getOpaqueValue());
1511 Stream.EmitRecord(ORIGINAL_FILE_ID, Record);
1525 RecordData::value_type Record[] = {ORIGINAL_PCH_DIR};
1526 Stream.EmitRecordWithBlob(AbbrevCode, Record, origDir);
1597 // Record this entry's offset.
1607 RecordData::value_type Record[] = {
1615 EmitRecordWithPath(IFAbbrevCode, Record, Entry.File->getName());
1630 RecordData::value_type Record[] = {INPUT_FILE_OFFSETS,
1632 Stream.EmitRecordWithBlob(OffsetsAbbrevCode, Record, bytes(InputFileOffsets));
1796 // record of that fact.
1882 RecordData::value_type Record[] = {HEADER_SEARCH_TABLE, BucketOffset,
1885 Stream.EmitRecordWithBlob(TableAbbrev, Record, TableData);
1902 RecordData Record;
1927 // Record the offset of this source-location entry.
1930 // Figure out which record code to use.
1940 Record.clear();
1941 Record.push_back(Code);
1944 Record.push_back(SLoc->getOffset() - 2);
1947 AddSourceLocation(File.getIncludeLoc(), Record);
1948 Record.push_back(File.getFileCharacteristic()); // FIXME: stable encoding
1949 Record.push_back(File.hasLineDirectives());
1959 Record.push_back(InputFileIDs[Content->OrigEntry]);
1961 Record.push_back(File.NumCreatedFIDs);
1965 Record.push_back(FDI->second->FirstDeclIndex);
1966 Record.push_back(FDI->second->DeclIDs.size());
1968 Record.push_back(0);
1969 Record.push_back(0);
1972 Stream.EmitRecordWithAbbrev(SLocFileAbbrv, Record);
1986 Stream.EmitRecordWithBlob(SLocBufferAbbrv, Record,
2007 RecordData::value_type Record[] = {SM_SLOC_BUFFER_BLOB_COMPRESSED,
2009 Stream.EmitRecordWithBlob(SLocBufferBlobCompressedAbbrv, Record,
2012 RecordData::value_type Record[] = {SM_SLOC_BUFFER_BLOB};
2013 Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record, Blob);
2019 AddSourceLocation(Expansion.getSpellingLoc(), Record);
2020 AddSourceLocation(Expansion.getExpansionLocStart(), Record);
2024 Record);
2030 Record.push_back(NextOffset - SLoc->getOffset() - 1);
2031 Stream.EmitRecordWithAbbrev(SLocExpansionAbbrv, Record);
2051 RecordData::value_type Record[] = {
2054 Stream.EmitRecordWithBlob(SLocOffsetsAbbrev, Record,
2066 Record.clear();
2076 AddPath(LineTable.getFilename(LE.FilenameID), Record);
2079 Record.push_back(0);
2088 Record.push_back(L.first.ID);
2091 Record.push_back(L.second.size());
2093 Record.push_back(LE.FileOffset);
2094 Record.push_back(LE.LineNo);
2095 Record.push_back(FilenameMap[LE.FilenameID]);
2096 Record.push_back((unsigned)LE.FileKind);
2097 Record.push_back(LE.IncludeOffset);
2101 Stream.EmitRecord(SOURCE_MANAGER_LINE_TABLE, Record);
2134 RecordData Record;
2139 RecordData::value_type Record[] = {PP.getCounterValue()};
2140 Stream.EmitRecord(PP_COUNTER_VALUE, Record);
2180 AddSourceLocation(MD->getLocation(), Record);
2181 Record.push_back(MD->getKind());
2183 Record.push_back(getMacroRef(DefMD->getInfo(), Name));
2185 Record.push_back(VisMD->isPublic());
2198 // Emit a record indicating this submodule exports this macro.
2216 if (Record.empty() && !EmittedModuleMacros)
2220 Stream.EmitRecord(PP_MACRO_DIRECTIVE_HISTORY, Record);
2221 Record.clear();
2242 // Record the local offset of this macro.
2253 AddIdentifierRef(Name, Record);
2254 Record.push_back(inferSubmoduleIDFromLocation(MI->getDefinitionLoc()));
2255 AddSourceLocation(MI->getDefinitionLoc(), Record);
2256 AddSourceLocation(MI->getDefinitionEndLoc(), Record);
2257 Record
2258 Record.push_back(MI->isUsedForHeaderGuard());
2265 Record.push_back(MI->isC99Varargs());
2266 Record.push_back(MI->isGNUVarargs());
2267 Record.push_back(MI->hasCommaPasting());
2268 Record.push_back(MI->getNumArgs());
2270 AddIdentifierRef(Arg, Record);
2273 // If we have a detailed preprocessing record, record the macro definition
2276 Record.push_back(MacroDefinitions[PPRec->findMacroDefinition(MI)]);
2278 Stream.EmitRecord(Code, Record);
2279 Record.clear();
2287 AddToken(Tok, Record);
2288 Stream.EmitRecord(PP_TOKEN, Record);
2289 Record.clear();
2307 RecordData::value_type Record[] = {MACRO_OFFSET, MacroOffsets.size(),
2309 Stream.EmitRecordWithBlob(MacroOffsetAbbrev, Record, bytes(MacroOffsets));
2322 // If the preprocessor has a preprocessing record, emit it.
2343 RecordData Record;
2348 Record.clear();
2354 // Record this macro definition's ID.
2357 AddIdentifierRef(MD->getName(), Record);
2358 Stream.EmitRecord(PPD_MACRO_DEFINITION, Record);
2363 Record.push_back(ME->isBuiltinMacro());
2365 AddIdentifierRef(ME->getName(), Record);
2367 Record.push_back(MacroDefinitions[ME->getDefinition()]);
2368 Stream.EmitRecord(PPD_MACRO_EXPANSION, Record);
2373 Record.push_back(PPD_INCLUSION_DIRECTIVE);
2374 Record.push_back(ID->getFileName().size());
2375 Record.push_back(ID->wasInQuotes());
2376 Record.push_back(static_cast<unsigned>(ID->getKind()));
2377 Record.push_back(ID->importedModule());
2384 Stream.EmitRecordWithBlob(InclusionAbbrev, Record, Buffer);
2392 // Write the offsets table for the preprocessing record.
2405 RecordData::value_type Record[] = {PPD_ENTITIES_OFFSETS,
2408 Stream.EmitRecordWithBlob(PPEOffsetAbbrev, Record,
2534 RecordData::value_type Record[] = {getNumberOfModules(WritingModule),
2537 Stream.EmitRecord(SUBMODULE_METADATA, Record);
2555 RecordData::value_type Record[] = {
2560 Stream.EmitRecordWithBlob(DefinitionAbbrev, Record, Mod->Name);
2565 RecordData::value_type Record[] = {SUBMODULE_REQUIRES, R.second};
2566 Stream.EmitRecordWithBlob(RequiresAbbrev, Record, R.first);
2571 RecordData::value_type Record[] = {SUBMODULE_UMBRELLA_HEADER};
2572 Stream.EmitRecordWithBlob(UmbrellaAbbrev, Record,
2575 RecordData::value_type Record[] = {SUBMODULE_UMBRELLA_DIR};
2576 Stream.EmitRecordWithBlob(UmbrellaDirAbbrev, Record,
2594 RecordData::value_type Record[] = {HL.RecordKind};
2596 Stream.EmitRecordWithBlob(HL.Abbrev, Record, H.NameAsWritten);
2602 RecordData::value_type Record[] = {SUBMODULE_TOPHEADER};
2604 Stream.EmitRecordWithBlob(TopHeaderAbbrev, Record, H->getName());
2609 RecordData Record;
2611 Record.push_back(getSubmoduleID(I));
2612 Stream.EmitRecord(SUBMODULE_IMPORTS, Record);
2617 RecordData Record;
2621 Record.push_back(getSubmoduleID(E.getPointer()));
2622 Record.push_back(E.getInt());
2624 Stream.EmitRecord(SUBMODULE_EXPORTS, Record);
2633 RecordData::value_type Record[] = {SUBMODULE_LINK_LIBRARY,
2635 Stream.EmitRecordWithBlob(LinkLibraryAbbrev, Record, LL.Library);
2642 RecordData::value_type Record[] = {SUBMODULE_CONFLICT,
2644 Stream.EmitRecordWithBlob(ConflictAbbrev, Record, C.Message);
2649 RecordData::value_type Record[] = {SUBMODULE_CONFIG_MACRO};
2650 Stream.EmitRecordWithBlob(ConfigMacroAbbrev, Record, CM);
2697 RecordData Record;
2705 AddSourceLocation(point.Loc, Record);
2707 Record.push_back(DiagStateID);
2713 Record.push_back(I.first);
2714 Record.push_back((unsigned)I.second.getSeverity());
2717 Record.push_back(-1); // mark the end of the diag/map pairs for this
2722 if (!Record.empty())
2723 Stream.EmitRecord(DIAG_PRAGMA_MAPPINGS, Record);
2739 RecordData Record;
2742 ASTTypeWriter W(*this, Record);
2746 // Record the offset for this type.
2780 RecordData::value_type Record[] = {DECL_CONTEXT_LEXICAL};
2781 Stream.EmitRecordWithBlob(DeclContextLexicalAbbrev, Record,
2797 RecordData::value_type Record[] = {TYPE_OFFSET, TypeOffsets.size(),
2799 Stream.EmitRecordWithBlob(TypeOffsetAbbrev, Record, bytes(TypeOffsets));
2810 RecordData::value_type Record[] = {DECL_OFFSET, DeclOffsets.size(),
2812 Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record, bytes(DeclOffsets));
2838 RecordData::value_type Record[] = {FILE_SORTED_DECLS,
2840 Stream.EmitRecordWithBlob(AbbrevCode, Record, bytes(FileGroupedDeclIDs));
2846 RecordData Record;
2848 Record.clear();
2849 AddSourceRange(I->getSourceRange(), Record);
2850 Record.push_back(I->getKind());
2851 Record.push_back(I->isTrailingComment());
2852 Record.push_back(I->isAlmostTrailingComment());
2853 Stream.EmitRecord(COMMENTS_RAW_COMMENT, Record);
3048 RecordData::value_type Record[] = {METHOD_POOL, BucketOffset,
3050 Stream.EmitRecordWithBlob(MethodPoolAbbrev, Record, MethodPool);
3063 RecordData::value_type Record[] = {
3066 Stream.EmitRecordWithBlob(SelectorOffsetAbbrev, Record,
3078 RecordData Record;
3079 ASTRecordWriter Writer(*this, Record);
3224 // Record the location of the key data. This is used when generating
3353 RecordData::value_type Record[] = {IDENTIFIER_TABLE, BucketOffset};
3354 Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable);
3370 RecordData::value_type Record[] = {IDENTIFIER_OFFSET,
3373 Stream.EmitRecordWithBlob(IdentifierOffsetAbbrev, Record,
3713 // lookup results as an update record for it rather than including them
3723 // Note that we need to emit an update record for the primary context.
3788 RecordData::value_type Record[] = {DECL_CONTEXT_VISIBLE};
3789 Stream.EmitRecordWithBlob(DeclContextVisibleLookupAbbrev, Record,
3811 // update record; those are the only ones that will be checked on reload.
3816 RecordData::value_type Record[] = {UPDATE_VISIBLE, getDeclID(cast<Decl>(DC))};
3817 Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable);
3822 RecordData::value_type Record[] = {Opts.fp_contract};
3823 Stream.EmitRecord(FP_PRAGMA_OPTIONS, Record);
3832 RecordData Record;
3833 #define OPENCLEXT(nm) Record.push_back(Opts.nm);
3835 Stream.EmitRecord(OPENCL_EXTENSIONS, Record);
3863 // Record this interface -> category map.
3881 RecordData::value_type Record[] = {OBJC_CATEGORIES_MAP, CategoriesMap.size()};
3882 Stream.EmitRecordWithBlob(AbbrevID, Record,
3896 RecordData Record;
3900 AddDeclRef(FD, Record);
3901 AddDeclRef(LPT->D, Record);
3902 Record.push_back(LPT->Toks.size());
3905 AddToken(Tok, Record);
3908 Stream.EmitRecord(LATE_PARSED_TEMPLATE, Record);
3913 RecordData Record;
3915 AddSourceLocation(PragmaLoc, Record);
3916 Stream.EmitRecord(OPTIMIZE_PRAGMA_OPTIONS, Record);
3921 RecordData Record;
3922 Record.push_back(SemaRef.MSStructPragmaOn ? PMSST_ON : PMSST_OFF);
3923 Stream.EmitRecord(MSSTRUCT_PRAGMA_OPTIONS, Record);
3929 RecordData Record;
3930 Record.push_back(SemaRef.MSPointerToMemberRepresentationMethod);
3931 AddSourceLocation(SemaRef.ImplicitMSInheritanceAttrLoc, Record);
3932 Stream.EmitRecord(POINTERS_TO_MEMBERS_PRAGMA_OPTIONS, Record);
3940 // Emit the metadata record abbreviation.
3950 // Emit the metadata record.
3951 RecordData Record;
3953 Record.push_back(EXTENSION_METADATA);
3954 Record.push_back(Metadata.MajorVersion);
3955 Record.push_back(Metadata.MinorVersion);
3956 Record.push_back(Metadata.BlockName.size());
3957 Record.push_back(Metadata.UserInfo.size());
3961 Stream.EmitRecordWithBlob(Abbrev, Record, Buffer);
3974 /// \brief Emit the list of attributes to the specified record.
3976 auto &Record = *this;
3977 Record.push_back(Attrs.size());
3979 Record.push_back(A->getKind()); // FIXME: stable encoding, target attrs
3980 Record.AddSourceRange(A->getRange());
3987 void ASTWriter::AddToken(const Token &Tok, RecordDataImpl &Record) {
3988 AddSourceLocation(Tok.getLocation(), Record);
3989 Record.push_back(Tok.getLength());
3993 AddIdentifierRef(Tok.getIdentifierInfo(), Record);
3995 Record.push_back(Tok.getKind());
3997 Record.push_back(Tok.getFlags());
4000 void ASTWriter::AddString(StringRef Str, RecordDataImpl &Record) {
4001 Record.push_back(Str.size());
4002 Record.insert(Record.end(), Str.begin(), Str.end());
4023 void ASTWriter::AddPath(StringRef Path, RecordDataImpl &Record) {
4026 AddString(FilePath, Record);
4029 void ASTWriter::EmitRecordWithPath(unsigned Abbrev, RecordDataRef Record,
4033 Stream.EmitRecordWithBlob(Abbrev, Record, FilePath);
4037 RecordDataImpl &Record) {
4038 Record.push_back(Version.getMajor());
4040 Record.push_back(*Minor + 1);
4042 Record.push_back(0);
4044 Record.push_back(*Subminor + 1);
4046 Record.push_back(0);
4064 // Don't record offsets for selectors that are also available in a different
4144 ASTWriter::RecordData &Record) {
4147 Writer.AddDeclRef(*I, Record);
4197 // Build a record containing all of the tentative definitions in this file, in
4198 // TentativeDefinitions order. Generally, this record will be empty for
4203 // Build a record containing all of the file scoped decls in this file.
4209 // Build a record containing all of the delegating constructors we still need
4228 // Build a record containing all of the ext_vector declarations.
4232 // Build a record containing all of the VTable uses information.
4242 // Build a record containing all of the UnusedLocalTypedefNameCandidates.
4247 // Build a record containing all of pending implicit instantiations.
4256 // Build a record containing some declaration references.
4268 // Build a record containing all of the known namespaces.
4275 // Build a record of all used, undefined objects that require definitions.
4285 // Build a record containing all delete-expressions that we would like to
4308 RecordData Record = {VERSION_MAJOR};
4309 Stream.EmitRecord(METADATA_OLD_FORMAT, Record);
4328 RecordData::value_type Record[] = {TU_UPDATE_LEXICAL};
4329 Stream.EmitRecordWithBlob(TuUpdateLexicalAbbrev, Record,
4349 ASTWriter::UpdateRecord &Record = DeclUpdates[TU];
4350 if (Record.empty())
4351 Record.push_back(DeclUpdate(UPD_CXX_ADDED_ANONYMOUS_NAMESPACE, NS));
4405 // Form the record of special types.
4471 RecordData::value_type Record[] = {MODULE_OFFSET_MAP};
4472 Stream.EmitRecordWithBlob(ModuleOffsetMapAbbrev, Record,
4521 // Write the record containing external, unnamed definitions.
4525 // Write the record containing tentative definitions.
4529 // Write the record containing unused file scoped decls.
4533 // Write the record containing weak undeclared identifiers.
4538 // Write the record containing ext_vector type names.
4542 // Write the record containing VTable uses information.
4546 // Write the record containing potentially unused local typedefs.
4551 // Write the record containing pending implicit instantiations.
4555 // Write the record containing declaration references of Sema.
4559 // Write the record containing CUDA-specific declaration references.
4630 RecordData::value_type Record[] = {
4632 Stream.EmitRecord(STATISTICS, Record);
4654 ASTRecordWriter Record(*this, RecordData);
4663 Record.push_back(Kind);
4670 Record.push_back(GetDeclRef(Update.getDecl()));
4677 Record.AddSourceLocation(Update.getLoc());
4681 Record.AddStmt(const_cast<Expr *>(
4688 Record.AddCXXDefinitionData(RD);
4689 Record.AddOffset(WriteDeclContextLexicalBlock(
4696 Record.push_back(MSInfo->getTemplateSpecializationKind());
4697 Record.AddSourceLocation(MSInfo->getPointOfInstantiation());
4700 Record.push_back(Spec->getTemplateSpecializationKind());
4701 Record.AddSourceLocation(Spec->getPointOfInstantiation());
4704 // specialization. If so, record which one.
4708 Record.push_back(true);
4709 Record.AddDeclRef(PartialSpec);
4710 Record.AddTemplateArgumentList(
4713 Record.push_back(false);
4716 Record.push_back(RD->getTagKind());
4717 Record.AddSourceLocation(RD->getLocation());
4718 Record.AddSourceLocation(RD->getLocStart());
4719 Record.AddSourceLocation(RD->getRBraceLoc());
4722 Record.push_back(D->hasAttrs());
4724 Record.AddAttributes(D->getAttrs());
4731 Record.AddDeclRef(Update.getDecl());
4737 Record);
4741 Record.push_back(GetOrCreateTypeID(Update.getType()));
4749 Record.push_back(Update.getNumber());
4753 Record.AddSourceRange(
4758 Record.AddSourceRange(
4763 Record.push_back(getSubmoduleID(Update.getModule()));
4767 Record.AddAttributes(llvm::makeArrayRef(Update.getAttr()));
4774 Record.push_back(UPD_CXX_ADDED_FUNCTION_DEFINITION);
4775 Record.push_back(Def->isInlined());
4776 Record.AddSourceLocation(Def->getInnerLocStart());
4777 Record.AddFunctionDefinition(Def);
4781 OffsetsRecord.push_back(Record.Emit(DECL_UPDATES));
4785 void ASTWriter::AddSourceLocation(SourceLocation Loc, RecordDataImpl &Record) {
4787 Record.push_back((Raw << 1) | (Raw >> 31));
4790 void ASTWriter::AddSourceRange(SourceRange Range, RecordDataImpl &Record) {
4791 AddSourceLocation(Range.getBegin(), Record);
4792 AddSourceLocation(Range.getEnd(), Record);
4796 Record->push_back(Value.getBitWidth());
4798 Record->append(Words, Words + Value.getNumWords());
4802 Record->push_back(Value.isUnsigned());
4810 void ASTWriter::AddIdentifierRef(const IdentifierInfo *II, RecordDataImpl &Record) {
4811 Record.push_back(getIdentifierRef(II));
4853 Record->push_back(Writer->getSelectorRef(SelRef));
4913 Record->push_back(InfoHasSameExpr);
4937 void ASTWriter::AddTypeRef(QualType T, RecordDataImpl &Record) {
4938 Record.push_back(GetOrCreateTypeID(T));
4977 void ASTWriter::AddDeclRef(const Decl *D, RecordDataImpl &Record) {
4978 Record.push_back(GetDeclRef(D));
5069 Record->push_back(Name.getNameKind());
5088 Record->push_back(Name.getCXXOverloadedOperator());
5161 Record->push_back(Info.NumTemplParamLists);
5177 Record->push_back(NestedNames.size());
5181 Record->push_back(Kind);
5198 Record->push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate);
5224 Record->push_back(NestedNames.size());
5229 Record->push_back(Kind);
5248 Record->push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate);
5267 Record->push_back(Kind);
5275 Record->push_back(OvT->size());
5284 Record->push_back(QualT->hasTemplateKeyword());
5292 Record->push_back(DepT->isIdentifier());
5296 Record->push_back(DepT->getOperator());
5319 Record->push_back(Arg.getKind());
5343 Record->push_back(*NumExpansions + 1);
5345 Record->push_back(0);
5351 Record->push_back(Arg.pack_size());
5364 Record->push_back(TemplateParams->size());
5373 Record->push_back(TemplateArgs->size());
5383 Record->push_back(ASTTemplArgList->NumTemplateArgs);
5390 Record->push_back(Set.size());
5394 Record->push_back(I.getAccess());
5400 Record->push_back(Base.isVirtual());
5401 Record->push_back(Base.isBaseOfClass());
5402 Record->push_back(Base.getAccessSpecifierAsWritten());
5403 Record->push_back(Base.getInheritConstructors());
5412 ASTWriter::RecordData Record;
5413 ASTRecordWriter Writer(W, Record);
5430 ASTWriter::RecordData Record;
5431 ASTRecordWriter Writer(W, Record);
5475 Record->push_back(Data.IsLambda);
5476 Record->push_back(Data.UserDeclaredConstructor);
5477 Record->push_back(Data.UserDeclaredSpecialMembers);
5478 Record->push_back(Data.Aggregate);
5479 Record->push_back(Data.PlainOldData);
5480 Record->push_back(Data.Empty);
5481 Record->push_back(Data.Polymorphic);
5482 Record->push_back(Data.Abstract);
5483 Record->push_back(Data.IsStandardLayout);
5484 Record->push_back(Data.HasNoNonEmptyBases);
5485 Record->push_back(Data.HasPrivateFields);
5486 Record->push_back(Data.HasProtectedFields);
5487 Record->push_back(Data.HasPublicFields);
5488 Record->push_back(Data.HasMutableFields);
5489 Record->push_back(Data.HasVariantMembers);
5490 Record->push_back(Data.HasOnlyCMembers);
5491 Record->push_back(Data.HasInClassInitializer);
5492 Record->push_back(Data.HasUninitializedReferenceMember);
5493 Record->push_back(Data.HasUninitializedFields);
5494 Record->push_back(Data.HasInheritedConstructor);
5495 Record->push_back(Data.HasInheritedAssignment);
5496 Record->push_back(Data.NeedOverloadResolutionForMoveConstructor);
5497 Record->push_back(Data.NeedOverloadResolutionForMoveAssignment);
5498 Record->push_back(Data.NeedOverloadResolutionForDestructor);
5499 Record->push_back(Data.DefaultedMoveConstructorIsDeleted);
5500 Record->push_back(Data.DefaultedMoveAssignmentIsDeleted);
5501 Record->push_back(Data.DefaultedDestructorIsDeleted);
5502 Record->push_back(Data.HasTrivialSpecialMembers);
5503 Record->push_back(Data.DeclaredNonTrivialSpecialMembers);
5504 Record->push_back(Data.HasIrrelevantDestructor);
5505 Record->push_back(Data.HasConstexprNonCopyMoveConstructor);
5506 Record->push_back(Data.HasDefaultedDefaultConstructor);
5507 Record->push_back(Data.DefaultedDefaultConstructorIsConstexpr);
5508 Record->push_back(Data.HasConstexprDefaultConstructor);
5509 Record->push_back(Data.HasNonLiteralTypeFieldsOrBases);
5510 Record->push_back(Data.ComputedVisibleConversions);
5511 Record->push_back(Data.UserProvidedDefaultConstructor);
5512 Record->push_back(Data.DeclaredSpecialMembers);
5513 Record->push_back(Data.ImplicitCopyConstructorHasConstParam);
5514 Record->push_back(Data.ImplicitCopyAssignmentHasConstParam);
5515 Record->push_back(Data.HasDeclaredCopyConstructorWithConstParam);
5516 Record->push_back(Data.HasDeclaredCopyAssignmentWithConstParam);
5519 Record->push_back(Data.NumBases);
5524 Record->push_back(Data.NumVBases);
5536 Record->push_back(Lambda.Dependent);
5537 Record->push_back(Lambda.IsGenericLambda);
5538 Record->push_back(Lambda.CaptureDefault);
5539 Record->push_back(Lambda.NumCaptures);
5540 Record->push_back(Lambda.NumExplicitCaptures);
5541 Record->push_back(Lambda.ManglingNumber);
5547 Record->push_back(Capture.isImplicit());
5548 Record->push_back(Capture.getCaptureKind());
5721 // chain, add an update record for it.
5802 // we can skip writing the update record. We make sure that isUsed() triggers
5836 const RecordDecl *Record) {
5838 if (!Record->isFromASTFile())
5840 DeclUpdates[Record].push_back(DeclUpdate(UPD_ADDED_ATTR_TO_RECORD, Attr));