Lines Matching refs:E
442 void ASTStmtWriter::VisitCoroutineSuspendExpr(CoroutineSuspendExpr *E) { in VisitCoroutineSuspendExpr() argument
443 VisitExpr(E); in VisitCoroutineSuspendExpr()
444 Record.AddSourceLocation(E->getKeywordLoc()); in VisitCoroutineSuspendExpr()
445 for (Stmt *S : E->children()) in VisitCoroutineSuspendExpr()
447 Record.AddStmt(E->getOpaqueValue()); in VisitCoroutineSuspendExpr()
450 void ASTStmtWriter::VisitCoawaitExpr(CoawaitExpr *E) { in VisitCoawaitExpr() argument
451 VisitCoroutineSuspendExpr(E); in VisitCoawaitExpr()
452 Record.push_back(E->isImplicit()); in VisitCoawaitExpr()
456 void ASTStmtWriter::VisitCoyieldExpr(CoyieldExpr *E) { in VisitCoyieldExpr() argument
457 VisitCoroutineSuspendExpr(E); in VisitCoyieldExpr()
461 void ASTStmtWriter::VisitDependentCoawaitExpr(DependentCoawaitExpr *E) { in VisitDependentCoawaitExpr() argument
462 VisitExpr(E); in VisitDependentCoawaitExpr()
463 Record.AddSourceLocation(E->getKeywordLoc()); in VisitDependentCoawaitExpr()
464 for (Stmt *S : E->children()) in VisitDependentCoawaitExpr()
478 auto *E = DetailRecord.second.dyn_cast<Expr *>(); in addConstraintSatisfaction() local
479 Record.push_back(E == nullptr); in addConstraintSatisfaction()
480 if (E) in addConstraintSatisfaction()
481 Record.AddStmt(E); in addConstraintSatisfaction()
502 ConceptSpecializationExpr *E) { in VisitConceptSpecializationExpr() argument
503 VisitExpr(E); in VisitConceptSpecializationExpr()
504 Record.AddDeclRef(E->getSpecializationDecl()); in VisitConceptSpecializationExpr()
505 const ConceptReference *CR = E->getConceptReference(); in VisitConceptSpecializationExpr()
509 if (!E->isValueDependent()) in VisitConceptSpecializationExpr()
510 addConstraintSatisfaction(Record, E->getSatisfaction()); in VisitConceptSpecializationExpr()
515 void ASTStmtWriter::VisitRequiresExpr(RequiresExpr *E) { in VisitRequiresExpr() argument
516 VisitExpr(E); in VisitRequiresExpr()
517 Record.push_back(E->getLocalParameters().size()); in VisitRequiresExpr()
518 Record.push_back(E->getRequirements().size()); in VisitRequiresExpr()
519 Record.AddSourceLocation(E->RequiresExprBits.RequiresKWLoc); in VisitRequiresExpr()
520 Record.push_back(E->RequiresExprBits.IsSatisfied); in VisitRequiresExpr()
521 Record.AddDeclRef(E->getBody()); in VisitRequiresExpr()
522 for (ParmVarDecl *P : E->getLocalParameters()) in VisitRequiresExpr()
524 for (concepts::Requirement *R : E->getRequirements()) { in VisitRequiresExpr()
573 Record.AddSourceLocation(E->getLParenLoc()); in VisitRequiresExpr()
574 Record.AddSourceLocation(E->getRParenLoc()); in VisitRequiresExpr()
575 Record.AddSourceLocation(E->getEndLoc()); in VisitRequiresExpr()
612 void ASTStmtWriter::VisitExpr(Expr *E) { in VisitExpr() argument
613 VisitStmt(E); in VisitExpr()
616 CurrentPackingBits.addBits(E->getDependence(), /*BitsWidth=*/5); in VisitExpr()
617 CurrentPackingBits.addBits(E->getValueKind(), /*BitsWidth=*/2); in VisitExpr()
618 CurrentPackingBits.addBits(E->getObjectKind(), /*BitsWidth=*/3); in VisitExpr()
620 Record.AddTypeRef(E->getType()); in VisitExpr()
623 void ASTStmtWriter::VisitConstantExpr(ConstantExpr *E) { in VisitConstantExpr() argument
624 VisitExpr(E); in VisitConstantExpr()
625 Record.push_back(E->ConstantExprBits.ResultKind); in VisitConstantExpr()
627 Record.push_back(E->ConstantExprBits.APValueKind); in VisitConstantExpr()
628 Record.push_back(E->ConstantExprBits.IsUnsigned); in VisitConstantExpr()
629 Record.push_back(E->ConstantExprBits.BitWidth); in VisitConstantExpr()
631 Record.push_back(E->ConstantExprBits.IsImmediateInvocation); in VisitConstantExpr()
633 switch (E->getResultStorageKind()) { in VisitConstantExpr()
637 Record.push_back(E->Int64Result()); in VisitConstantExpr()
640 Record.AddAPValue(E->APValueResult()); in VisitConstantExpr()
644 Record.AddStmt(E->getSubExpr()); in VisitConstantExpr()
648 void ASTStmtWriter::VisitSYCLUniqueStableNameExpr(SYCLUniqueStableNameExpr *E) { in VisitSYCLUniqueStableNameExpr() argument
649 VisitExpr(E); in VisitSYCLUniqueStableNameExpr()
651 Record.AddSourceLocation(E->getLocation()); in VisitSYCLUniqueStableNameExpr()
652 Record.AddSourceLocation(E->getLParenLocation()); in VisitSYCLUniqueStableNameExpr()
653 Record.AddSourceLocation(E->getRParenLocation()); in VisitSYCLUniqueStableNameExpr()
654 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitSYCLUniqueStableNameExpr()
659 void ASTStmtWriter::VisitPredefinedExpr(PredefinedExpr *E) { in VisitPredefinedExpr() argument
660 VisitExpr(E); in VisitPredefinedExpr()
662 bool HasFunctionName = E->getFunctionName() != nullptr; in VisitPredefinedExpr()
665 llvm::to_underlying(E->getIdentKind())); // FIXME: stable encoding in VisitPredefinedExpr()
666 Record.push_back(E->isTransparent()); in VisitPredefinedExpr()
667 Record.AddSourceLocation(E->getLocation()); in VisitPredefinedExpr()
669 Record.AddStmt(E->getFunctionName()); in VisitPredefinedExpr()
673 void ASTStmtWriter::VisitDeclRefExpr(DeclRefExpr *E) { in VisitDeclRefExpr() argument
674 VisitExpr(E); in VisitDeclRefExpr()
678 CurrentPackingBits.addBit(E->hadMultipleCandidates()); in VisitDeclRefExpr()
679 CurrentPackingBits.addBit(E->refersToEnclosingVariableOrCapture()); in VisitDeclRefExpr()
680 CurrentPackingBits.addBits(E->isNonOdrUse(), /*Width=*/2); in VisitDeclRefExpr()
681 CurrentPackingBits.addBit(E->isImmediateEscalating()); in VisitDeclRefExpr()
682 CurrentPackingBits.addBit(E->getDecl() != E->getFoundDecl()); in VisitDeclRefExpr()
683 CurrentPackingBits.addBit(E->hasQualifier()); in VisitDeclRefExpr()
684 CurrentPackingBits.addBit(E->hasTemplateKWAndArgsInfo()); in VisitDeclRefExpr()
686 if (E->hasTemplateKWAndArgsInfo()) { in VisitDeclRefExpr()
687 unsigned NumTemplateArgs = E->getNumTemplateArgs(); in VisitDeclRefExpr()
691 DeclarationName::NameKind nk = (E->getDecl()->getDeclName().getNameKind()); in VisitDeclRefExpr()
693 if ((!E->hasTemplateKWAndArgsInfo()) && (!E->hasQualifier()) && in VisitDeclRefExpr()
694 (E->getDecl() == E->getFoundDecl()) && in VisitDeclRefExpr()
695 nk == DeclarationName::Identifier && E->getObjectKind() == OK_Ordinary) { in VisitDeclRefExpr()
699 if (E->hasQualifier()) in VisitDeclRefExpr()
700 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitDeclRefExpr()
702 if (E->getDecl() != E->getFoundDecl()) in VisitDeclRefExpr()
703 Record.AddDeclRef(E->getFoundDecl()); in VisitDeclRefExpr()
705 if (E->hasTemplateKWAndArgsInfo()) in VisitDeclRefExpr()
706 AddTemplateKWAndArgsInfo(*E->getTrailingObjects<ASTTemplateKWAndArgsInfo>(), in VisitDeclRefExpr()
707 E->getTrailingObjects<TemplateArgumentLoc>()); in VisitDeclRefExpr()
709 Record.AddDeclRef(E->getDecl()); in VisitDeclRefExpr()
710 Record.AddSourceLocation(E->getLocation()); in VisitDeclRefExpr()
711 Record.AddDeclarationNameLoc(E->DNLoc, E->getDecl()->getDeclName()); in VisitDeclRefExpr()
715 void ASTStmtWriter::VisitIntegerLiteral(IntegerLiteral *E) { in VisitIntegerLiteral() argument
716 VisitExpr(E); in VisitIntegerLiteral()
717 Record.AddSourceLocation(E->getLocation()); in VisitIntegerLiteral()
718 Record.AddAPInt(E->getValue()); in VisitIntegerLiteral()
720 if (E->getValue().getBitWidth() == 32) { in VisitIntegerLiteral()
727 void ASTStmtWriter::VisitFixedPointLiteral(FixedPointLiteral *E) { in VisitFixedPointLiteral() argument
728 VisitExpr(E); in VisitFixedPointLiteral()
729 Record.AddSourceLocation(E->getLocation()); in VisitFixedPointLiteral()
730 Record.push_back(E->getScale()); in VisitFixedPointLiteral()
731 Record.AddAPInt(E->getValue()); in VisitFixedPointLiteral()
735 void ASTStmtWriter::VisitFloatingLiteral(FloatingLiteral *E) { in VisitFloatingLiteral() argument
736 VisitExpr(E); in VisitFloatingLiteral()
737 Record.push_back(E->getRawSemantics()); in VisitFloatingLiteral()
738 Record.push_back(E->isExact()); in VisitFloatingLiteral()
739 Record.AddAPFloat(E->getValue()); in VisitFloatingLiteral()
740 Record.AddSourceLocation(E->getLocation()); in VisitFloatingLiteral()
744 void ASTStmtWriter::VisitImaginaryLiteral(ImaginaryLiteral *E) { in VisitImaginaryLiteral() argument
745 VisitExpr(E); in VisitImaginaryLiteral()
746 Record.AddStmt(E->getSubExpr()); in VisitImaginaryLiteral()
750 void ASTStmtWriter::VisitStringLiteral(StringLiteral *E) { in VisitStringLiteral() argument
751 VisitExpr(E); in VisitStringLiteral()
754 Record.push_back(E->getNumConcatenated()); in VisitStringLiteral()
755 Record.push_back(E->getLength()); in VisitStringLiteral()
756 Record.push_back(E->getCharByteWidth()); in VisitStringLiteral()
757 Record.push_back(llvm::to_underlying(E->getKind())); in VisitStringLiteral()
758 Record.push_back(E->isPascal()); in VisitStringLiteral()
761 for (unsigned I = 0, N = E->getNumConcatenated(); I != N; ++I) in VisitStringLiteral()
762 Record.AddSourceLocation(E->getStrTokenLoc(I)); in VisitStringLiteral()
765 StringRef StrData = E->getBytes(); in VisitStringLiteral()
766 for (unsigned I = 0, N = E->getByteLength(); I != N; ++I) in VisitStringLiteral()
772 void ASTStmtWriter::VisitCharacterLiteral(CharacterLiteral *E) { in VisitCharacterLiteral() argument
773 VisitExpr(E); in VisitCharacterLiteral()
774 Record.push_back(E->getValue()); in VisitCharacterLiteral()
775 Record.AddSourceLocation(E->getLocation()); in VisitCharacterLiteral()
776 Record.push_back(llvm::to_underlying(E->getKind())); in VisitCharacterLiteral()
783 void ASTStmtWriter::VisitParenExpr(ParenExpr *E) { in VisitParenExpr() argument
784 VisitExpr(E); in VisitParenExpr()
785 Record.AddSourceLocation(E->getLParen()); in VisitParenExpr()
786 Record.AddSourceLocation(E->getRParen()); in VisitParenExpr()
787 Record.AddStmt(E->getSubExpr()); in VisitParenExpr()
791 void ASTStmtWriter::VisitParenListExpr(ParenListExpr *E) { in VisitParenListExpr() argument
792 VisitExpr(E); in VisitParenListExpr()
793 Record.push_back(E->getNumExprs()); in VisitParenListExpr()
794 for (auto *SubStmt : E->exprs()) in VisitParenListExpr()
796 Record.AddSourceLocation(E->getLParenLoc()); in VisitParenListExpr()
797 Record.AddSourceLocation(E->getRParenLoc()); in VisitParenListExpr()
801 void ASTStmtWriter::VisitUnaryOperator(UnaryOperator *E) { in VisitUnaryOperator() argument
802 VisitExpr(E); in VisitUnaryOperator()
803 bool HasFPFeatures = E->hasStoredFPFeatures(); in VisitUnaryOperator()
807 Record.AddStmt(E->getSubExpr()); in VisitUnaryOperator()
808 CurrentPackingBits.addBits(E->getOpcode(), in VisitUnaryOperator()
810 Record.AddSourceLocation(E->getOperatorLoc()); in VisitUnaryOperator()
811 CurrentPackingBits.addBit(E->canOverflow()); in VisitUnaryOperator()
814 Record.push_back(E->getStoredFPFeatures().getAsOpaqueInt()); in VisitUnaryOperator()
818 void ASTStmtWriter::VisitOffsetOfExpr(OffsetOfExpr *E) { in VisitOffsetOfExpr() argument
819 VisitExpr(E); in VisitOffsetOfExpr()
820 Record.push_back(E->getNumComponents()); in VisitOffsetOfExpr()
821 Record.push_back(E->getNumExpressions()); in VisitOffsetOfExpr()
822 Record.AddSourceLocation(E->getOperatorLoc()); in VisitOffsetOfExpr()
823 Record.AddSourceLocation(E->getRParenLoc()); in VisitOffsetOfExpr()
824 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitOffsetOfExpr()
825 for (unsigned I = 0, N = E->getNumComponents(); I != N; ++I) { in VisitOffsetOfExpr()
826 const OffsetOfNode &ON = E->getComponent(I); in VisitOffsetOfExpr()
848 for (unsigned I = 0, N = E->getNumExpressions(); I != N; ++I) in VisitOffsetOfExpr()
849 Record.AddStmt(E->getIndexExpr(I)); in VisitOffsetOfExpr()
853 void ASTStmtWriter::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E) { in VisitUnaryExprOrTypeTraitExpr() argument
854 VisitExpr(E); in VisitUnaryExprOrTypeTraitExpr()
855 Record.push_back(E->getKind()); in VisitUnaryExprOrTypeTraitExpr()
856 if (E->isArgumentType()) in VisitUnaryExprOrTypeTraitExpr()
857 Record.AddTypeSourceInfo(E->getArgumentTypeInfo()); in VisitUnaryExprOrTypeTraitExpr()
860 Record.AddStmt(E->getArgumentExpr()); in VisitUnaryExprOrTypeTraitExpr()
862 Record.AddSourceLocation(E->getOperatorLoc()); in VisitUnaryExprOrTypeTraitExpr()
863 Record.AddSourceLocation(E->getRParenLoc()); in VisitUnaryExprOrTypeTraitExpr()
867 void ASTStmtWriter::VisitArraySubscriptExpr(ArraySubscriptExpr *E) { in VisitArraySubscriptExpr() argument
868 VisitExpr(E); in VisitArraySubscriptExpr()
869 Record.AddStmt(E->getLHS()); in VisitArraySubscriptExpr()
870 Record.AddStmt(E->getRHS()); in VisitArraySubscriptExpr()
871 Record.AddSourceLocation(E->getRBracketLoc()); in VisitArraySubscriptExpr()
875 void ASTStmtWriter::VisitMatrixSubscriptExpr(MatrixSubscriptExpr *E) { in VisitMatrixSubscriptExpr() argument
876 VisitExpr(E); in VisitMatrixSubscriptExpr()
877 Record.AddStmt(E->getBase()); in VisitMatrixSubscriptExpr()
878 Record.AddStmt(E->getRowIdx()); in VisitMatrixSubscriptExpr()
879 Record.AddStmt(E->getColumnIdx()); in VisitMatrixSubscriptExpr()
880 Record.AddSourceLocation(E->getRBracketLoc()); in VisitMatrixSubscriptExpr()
884 void ASTStmtWriter::VisitOMPArraySectionExpr(OMPArraySectionExpr *E) { in VisitOMPArraySectionExpr() argument
885 VisitExpr(E); in VisitOMPArraySectionExpr()
886 Record.AddStmt(E->getBase()); in VisitOMPArraySectionExpr()
887 Record.AddStmt(E->getLowerBound()); in VisitOMPArraySectionExpr()
888 Record.AddStmt(E->getLength()); in VisitOMPArraySectionExpr()
889 Record.AddStmt(E->getStride()); in VisitOMPArraySectionExpr()
890 Record.AddSourceLocation(E->getColonLocFirst()); in VisitOMPArraySectionExpr()
891 Record.AddSourceLocation(E->getColonLocSecond()); in VisitOMPArraySectionExpr()
892 Record.AddSourceLocation(E->getRBracketLoc()); in VisitOMPArraySectionExpr()
896 void ASTStmtWriter::VisitOMPArrayShapingExpr(OMPArrayShapingExpr *E) { in VisitOMPArrayShapingExpr() argument
897 VisitExpr(E); in VisitOMPArrayShapingExpr()
898 Record.push_back(E->getDimensions().size()); in VisitOMPArrayShapingExpr()
899 Record.AddStmt(E->getBase()); in VisitOMPArrayShapingExpr()
900 for (Expr *Dim : E->getDimensions()) in VisitOMPArrayShapingExpr()
902 for (SourceRange SR : E->getBracketsRanges()) in VisitOMPArrayShapingExpr()
904 Record.AddSourceLocation(E->getLParenLoc()); in VisitOMPArrayShapingExpr()
905 Record.AddSourceLocation(E->getRParenLoc()); in VisitOMPArrayShapingExpr()
909 void ASTStmtWriter::VisitOMPIteratorExpr(OMPIteratorExpr *E) { in VisitOMPIteratorExpr() argument
910 VisitExpr(E); in VisitOMPIteratorExpr()
911 Record.push_back(E->numOfIterators()); in VisitOMPIteratorExpr()
912 Record.AddSourceLocation(E->getIteratorKwLoc()); in VisitOMPIteratorExpr()
913 Record.AddSourceLocation(E->getLParenLoc()); in VisitOMPIteratorExpr()
914 Record.AddSourceLocation(E->getRParenLoc()); in VisitOMPIteratorExpr()
915 for (unsigned I = 0, End = E->numOfIterators(); I < End; ++I) { in VisitOMPIteratorExpr()
916 Record.AddDeclRef(E->getIteratorDecl(I)); in VisitOMPIteratorExpr()
917 Record.AddSourceLocation(E->getAssignLoc(I)); in VisitOMPIteratorExpr()
918 OMPIteratorExpr::IteratorRange Range = E->getIteratorRange(I); in VisitOMPIteratorExpr()
922 Record.AddSourceLocation(E->getColonLoc(I)); in VisitOMPIteratorExpr()
924 Record.AddSourceLocation(E->getSecondColonLoc(I)); in VisitOMPIteratorExpr()
926 OMPIteratorHelperData &HD = E->getHelper(I); in VisitOMPIteratorExpr()
935 void ASTStmtWriter::VisitCallExpr(CallExpr *E) { in VisitCallExpr() argument
936 VisitExpr(E); in VisitCallExpr()
938 Record.push_back(E->getNumArgs()); in VisitCallExpr()
940 CurrentPackingBits.addBit(static_cast<bool>(E->getADLCallKind())); in VisitCallExpr()
941 CurrentPackingBits.addBit(E->hasStoredFPFeatures()); in VisitCallExpr()
943 Record.AddSourceLocation(E->getRParenLoc()); in VisitCallExpr()
944 Record.AddStmt(E->getCallee()); in VisitCallExpr()
945 for (CallExpr::arg_iterator Arg = E->arg_begin(), ArgEnd = E->arg_end(); in VisitCallExpr()
949 if (E->hasStoredFPFeatures()) in VisitCallExpr()
950 Record.push_back(E->getFPFeatures().getAsOpaqueInt()); in VisitCallExpr()
952 if (!E->hasStoredFPFeatures() && !static_cast<bool>(E->getADLCallKind()) && in VisitCallExpr()
953 E->getStmtClass() == Stmt::CallExprClass) in VisitCallExpr()
959 void ASTStmtWriter::VisitRecoveryExpr(RecoveryExpr *E) { in VisitRecoveryExpr() argument
960 VisitExpr(E); in VisitRecoveryExpr()
961 Record.push_back(std::distance(E->children().begin(), E->children().end())); in VisitRecoveryExpr()
962 Record.AddSourceLocation(E->getBeginLoc()); in VisitRecoveryExpr()
963 Record.AddSourceLocation(E->getEndLoc()); in VisitRecoveryExpr()
964 for (Stmt *Child : E->children()) in VisitRecoveryExpr()
969 void ASTStmtWriter::VisitMemberExpr(MemberExpr *E) { in VisitMemberExpr() argument
970 VisitExpr(E); in VisitMemberExpr()
972 bool HasQualifier = E->hasQualifier(); in VisitMemberExpr()
974 E->hasQualifierOrFoundDecl() && in VisitMemberExpr()
975 (E->getFoundDecl().getDecl() != E->getMemberDecl() || in VisitMemberExpr()
976 E->getFoundDecl().getAccess() != E->getMemberDecl()->getAccess()); in VisitMemberExpr()
977 bool HasTemplateInfo = E->hasTemplateKWAndArgsInfo(); in VisitMemberExpr()
978 unsigned NumTemplateArgs = E->getNumTemplateArgs(); in VisitMemberExpr()
988 Record.AddStmt(E->getBase()); in VisitMemberExpr()
989 Record.AddDeclRef(E->getMemberDecl()); in VisitMemberExpr()
990 Record.AddDeclarationNameLoc(E->MemberDNLoc, in VisitMemberExpr()
991 E->getMemberDecl()->getDeclName()); in VisitMemberExpr()
992 Record.AddSourceLocation(E->getMemberLoc()); in VisitMemberExpr()
993 CurrentPackingBits.addBit(E->isArrow()); in VisitMemberExpr()
994 CurrentPackingBits.addBit(E->hadMultipleCandidates()); in VisitMemberExpr()
995 CurrentPackingBits.addBits(E->isNonOdrUse(), /*Width=*/2); in VisitMemberExpr()
996 Record.AddSourceLocation(E->getOperatorLoc()); in VisitMemberExpr()
999 DeclAccessPair FoundDecl = E->getFoundDecl(); in VisitMemberExpr()
1005 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitMemberExpr()
1008 AddTemplateKWAndArgsInfo(*E->getTrailingObjects<ASTTemplateKWAndArgsInfo>(), in VisitMemberExpr()
1009 E->getTrailingObjects<TemplateArgumentLoc>()); in VisitMemberExpr()
1014 void ASTStmtWriter::VisitObjCIsaExpr(ObjCIsaExpr *E) { in VisitObjCIsaExpr() argument
1015 VisitExpr(E); in VisitObjCIsaExpr()
1016 Record.AddStmt(E->getBase()); in VisitObjCIsaExpr()
1017 Record.AddSourceLocation(E->getIsaMemberLoc()); in VisitObjCIsaExpr()
1018 Record.AddSourceLocation(E->getOpLoc()); in VisitObjCIsaExpr()
1019 Record.push_back(E->isArrow()); in VisitObjCIsaExpr()
1024 VisitObjCIndirectCopyRestoreExpr(ObjCIndirectCopyRestoreExpr *E) { in VisitObjCIndirectCopyRestoreExpr() argument
1025 VisitExpr(E); in VisitObjCIndirectCopyRestoreExpr()
1026 Record.AddStmt(E->getSubExpr()); in VisitObjCIndirectCopyRestoreExpr()
1027 Record.push_back(E->shouldCopy()); in VisitObjCIndirectCopyRestoreExpr()
1031 void ASTStmtWriter::VisitObjCBridgedCastExpr(ObjCBridgedCastExpr *E) { in VisitObjCBridgedCastExpr() argument
1032 VisitExplicitCastExpr(E); in VisitObjCBridgedCastExpr()
1033 Record.AddSourceLocation(E->getLParenLoc()); in VisitObjCBridgedCastExpr()
1034 Record.AddSourceLocation(E->getBridgeKeywordLoc()); in VisitObjCBridgedCastExpr()
1035 Record.push_back(E->getBridgeKind()); // FIXME: Stable encoding in VisitObjCBridgedCastExpr()
1039 void ASTStmtWriter::VisitCastExpr(CastExpr *E) { in VisitCastExpr() argument
1040 VisitExpr(E); in VisitCastExpr()
1042 Record.push_back(E->path_size()); in VisitCastExpr()
1045 CurrentPackingBits.addBits(E->getCastKind(), /*Width=*/7); in VisitCastExpr()
1046 CurrentPackingBits.addBit(E->hasStoredFPFeatures()); in VisitCastExpr()
1047 Record.AddStmt(E->getSubExpr()); in VisitCastExpr()
1050 PI = E->path_begin(), PE = E->path_end(); PI != PE; ++PI) in VisitCastExpr()
1053 if (E->hasStoredFPFeatures()) in VisitCastExpr()
1054 Record.push_back(E->getFPFeatures().getAsOpaqueInt()); in VisitCastExpr()
1057 void ASTStmtWriter::VisitBinaryOperator(BinaryOperator *E) { in VisitBinaryOperator() argument
1058 VisitExpr(E); in VisitBinaryOperator()
1063 CurrentPackingBits.addBits(E->getOpcode(), /*Width=*/6); in VisitBinaryOperator()
1064 bool HasFPFeatures = E->hasStoredFPFeatures(); in VisitBinaryOperator()
1066 Record.AddStmt(E->getLHS()); in VisitBinaryOperator()
1067 Record.AddStmt(E->getRHS()); in VisitBinaryOperator()
1068 Record.AddSourceLocation(E->getOperatorLoc()); in VisitBinaryOperator()
1070 Record.push_back(E->getStoredFPFeatures().getAsOpaqueInt()); in VisitBinaryOperator()
1072 if (!HasFPFeatures && E->getValueKind() == VK_PRValue && in VisitBinaryOperator()
1073 E->getObjectKind() == OK_Ordinary) in VisitBinaryOperator()
1079 void ASTStmtWriter::VisitCompoundAssignOperator(CompoundAssignOperator *E) { in VisitCompoundAssignOperator() argument
1080 VisitBinaryOperator(E); in VisitCompoundAssignOperator()
1081 Record.AddTypeRef(E->getComputationLHSType()); in VisitCompoundAssignOperator()
1082 Record.AddTypeRef(E->getComputationResultType()); in VisitCompoundAssignOperator()
1084 if (!E->hasStoredFPFeatures() && E->getValueKind() == VK_PRValue && in VisitCompoundAssignOperator()
1085 E->getObjectKind() == OK_Ordinary) in VisitCompoundAssignOperator()
1091 void ASTStmtWriter::VisitConditionalOperator(ConditionalOperator *E) { in VisitConditionalOperator() argument
1092 VisitExpr(E); in VisitConditionalOperator()
1093 Record.AddStmt(E->getCond()); in VisitConditionalOperator()
1094 Record.AddStmt(E->getLHS()); in VisitConditionalOperator()
1095 Record.AddStmt(E->getRHS()); in VisitConditionalOperator()
1096 Record.AddSourceLocation(E->getQuestionLoc()); in VisitConditionalOperator()
1097 Record.AddSourceLocation(E->getColonLoc()); in VisitConditionalOperator()
1102 ASTStmtWriter::VisitBinaryConditionalOperator(BinaryConditionalOperator *E) { in VisitBinaryConditionalOperator() argument
1103 VisitExpr(E); in VisitBinaryConditionalOperator()
1104 Record.AddStmt(E->getOpaqueValue()); in VisitBinaryConditionalOperator()
1105 Record.AddStmt(E->getCommon()); in VisitBinaryConditionalOperator()
1106 Record.AddStmt(E->getCond()); in VisitBinaryConditionalOperator()
1107 Record.AddStmt(E->getTrueExpr()); in VisitBinaryConditionalOperator()
1108 Record.AddStmt(E->getFalseExpr()); in VisitBinaryConditionalOperator()
1109 Record.AddSourceLocation(E->getQuestionLoc()); in VisitBinaryConditionalOperator()
1110 Record.AddSourceLocation(E->getColonLoc()); in VisitBinaryConditionalOperator()
1114 void ASTStmtWriter::VisitImplicitCastExpr(ImplicitCastExpr *E) { in VisitImplicitCastExpr() argument
1115 VisitCastExpr(E); in VisitImplicitCastExpr()
1116 CurrentPackingBits.addBit(E->isPartOfExplicitCast()); in VisitImplicitCastExpr()
1118 if (E->path_size() == 0 && !E->hasStoredFPFeatures()) in VisitImplicitCastExpr()
1124 void ASTStmtWriter::VisitExplicitCastExpr(ExplicitCastExpr *E) { in VisitExplicitCastExpr() argument
1125 VisitCastExpr(E); in VisitExplicitCastExpr()
1126 Record.AddTypeSourceInfo(E->getTypeInfoAsWritten()); in VisitExplicitCastExpr()
1129 void ASTStmtWriter::VisitCStyleCastExpr(CStyleCastExpr *E) { in VisitCStyleCastExpr() argument
1130 VisitExplicitCastExpr(E); in VisitCStyleCastExpr()
1131 Record.AddSourceLocation(E->getLParenLoc()); in VisitCStyleCastExpr()
1132 Record.AddSourceLocation(E->getRParenLoc()); in VisitCStyleCastExpr()
1136 void ASTStmtWriter::VisitCompoundLiteralExpr(CompoundLiteralExpr *E) { in VisitCompoundLiteralExpr() argument
1137 VisitExpr(E); in VisitCompoundLiteralExpr()
1138 Record.AddSourceLocation(E->getLParenLoc()); in VisitCompoundLiteralExpr()
1139 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitCompoundLiteralExpr()
1140 Record.AddStmt(E->getInitializer()); in VisitCompoundLiteralExpr()
1141 Record.push_back(E->isFileScope()); in VisitCompoundLiteralExpr()
1145 void ASTStmtWriter::VisitExtVectorElementExpr(ExtVectorElementExpr *E) { in VisitExtVectorElementExpr() argument
1146 VisitExpr(E); in VisitExtVectorElementExpr()
1147 Record.AddStmt(E->getBase()); in VisitExtVectorElementExpr()
1148 Record.AddIdentifierRef(&E->getAccessor()); in VisitExtVectorElementExpr()
1149 Record.AddSourceLocation(E->getAccessorLoc()); in VisitExtVectorElementExpr()
1153 void ASTStmtWriter::VisitInitListExpr(InitListExpr *E) { in VisitInitListExpr() argument
1154 VisitExpr(E); in VisitInitListExpr()
1157 Record.AddStmt(E->getSyntacticForm()); in VisitInitListExpr()
1158 Record.AddSourceLocation(E->getLBraceLoc()); in VisitInitListExpr()
1159 Record.AddSourceLocation(E->getRBraceLoc()); in VisitInitListExpr()
1160 bool isArrayFiller = E->ArrayFillerOrUnionFieldInit.is<Expr*>(); in VisitInitListExpr()
1163 Record.AddStmt(E->getArrayFiller()); in VisitInitListExpr()
1165 Record.AddDeclRef(E->getInitializedFieldInUnion()); in VisitInitListExpr()
1166 Record.push_back(E->hadArrayRangeDesignator()); in VisitInitListExpr()
1167 Record.push_back(E->getNumInits()); in VisitInitListExpr()
1171 Expr *filler = E->getArrayFiller(); in VisitInitListExpr()
1172 for (unsigned I = 0, N = E->getNumInits(); I != N; ++I) in VisitInitListExpr()
1173 Record.AddStmt(E->getInit(I) != filler ? E->getInit(I) : nullptr); in VisitInitListExpr()
1175 for (unsigned I = 0, N = E->getNumInits(); I != N; ++I) in VisitInitListExpr()
1176 Record.AddStmt(E->getInit(I)); in VisitInitListExpr()
1181 void ASTStmtWriter::VisitDesignatedInitExpr(DesignatedInitExpr *E) { in VisitDesignatedInitExpr() argument
1182 VisitExpr(E); in VisitDesignatedInitExpr()
1183 Record.push_back(E->getNumSubExprs()); in VisitDesignatedInitExpr()
1184 for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) in VisitDesignatedInitExpr()
1185 Record.AddStmt(E->getSubExpr(I)); in VisitDesignatedInitExpr()
1186 Record.AddSourceLocation(E->getEqualOrColonLoc()); in VisitDesignatedInitExpr()
1187 Record.push_back(E->usesGNUSyntax()); in VisitDesignatedInitExpr()
1188 for (const DesignatedInitExpr::Designator &D : E->designators()) { in VisitDesignatedInitExpr()
1216 void ASTStmtWriter::VisitDesignatedInitUpdateExpr(DesignatedInitUpdateExpr *E) { in VisitDesignatedInitUpdateExpr() argument
1217 VisitExpr(E); in VisitDesignatedInitUpdateExpr()
1218 Record.AddStmt(E->getBase()); in VisitDesignatedInitUpdateExpr()
1219 Record.AddStmt(E->getUpdater()); in VisitDesignatedInitUpdateExpr()
1223 void ASTStmtWriter::VisitNoInitExpr(NoInitExpr *E) { in VisitNoInitExpr() argument
1224 VisitExpr(E); in VisitNoInitExpr()
1228 void ASTStmtWriter::VisitArrayInitLoopExpr(ArrayInitLoopExpr *E) { in VisitArrayInitLoopExpr() argument
1229 VisitExpr(E); in VisitArrayInitLoopExpr()
1230 Record.AddStmt(E->SubExprs[0]); in VisitArrayInitLoopExpr()
1231 Record.AddStmt(E->SubExprs[1]); in VisitArrayInitLoopExpr()
1235 void ASTStmtWriter::VisitArrayInitIndexExpr(ArrayInitIndexExpr *E) { in VisitArrayInitIndexExpr() argument
1236 VisitExpr(E); in VisitArrayInitIndexExpr()
1240 void ASTStmtWriter::VisitImplicitValueInitExpr(ImplicitValueInitExpr *E) { in VisitImplicitValueInitExpr() argument
1241 VisitExpr(E); in VisitImplicitValueInitExpr()
1245 void ASTStmtWriter::VisitVAArgExpr(VAArgExpr *E) { in VisitVAArgExpr() argument
1246 VisitExpr(E); in VisitVAArgExpr()
1247 Record.AddStmt(E->getSubExpr()); in VisitVAArgExpr()
1248 Record.AddTypeSourceInfo(E->getWrittenTypeInfo()); in VisitVAArgExpr()
1249 Record.AddSourceLocation(E->getBuiltinLoc()); in VisitVAArgExpr()
1250 Record.AddSourceLocation(E->getRParenLoc()); in VisitVAArgExpr()
1251 Record.push_back(E->isMicrosoftABI()); in VisitVAArgExpr()
1255 void ASTStmtWriter::VisitSourceLocExpr(SourceLocExpr *E) { in VisitSourceLocExpr() argument
1256 VisitExpr(E); in VisitSourceLocExpr()
1257 Record.AddDeclRef(cast_or_null<Decl>(E->getParentContext())); in VisitSourceLocExpr()
1258 Record.AddSourceLocation(E->getBeginLoc()); in VisitSourceLocExpr()
1259 Record.AddSourceLocation(E->getEndLoc()); in VisitSourceLocExpr()
1260 Record.push_back(llvm::to_underlying(E->getIdentKind())); in VisitSourceLocExpr()
1264 void ASTStmtWriter::VisitAddrLabelExpr(AddrLabelExpr *E) { in VisitAddrLabelExpr() argument
1265 VisitExpr(E); in VisitAddrLabelExpr()
1266 Record.AddSourceLocation(E->getAmpAmpLoc()); in VisitAddrLabelExpr()
1267 Record.AddSourceLocation(E->getLabelLoc()); in VisitAddrLabelExpr()
1268 Record.AddDeclRef(E->getLabel()); in VisitAddrLabelExpr()
1272 void ASTStmtWriter::VisitStmtExpr(StmtExpr *E) { in VisitStmtExpr() argument
1273 VisitExpr(E); in VisitStmtExpr()
1274 Record.AddStmt(E->getSubStmt()); in VisitStmtExpr()
1275 Record.AddSourceLocation(E->getLParenLoc()); in VisitStmtExpr()
1276 Record.AddSourceLocation(E->getRParenLoc()); in VisitStmtExpr()
1277 Record.push_back(E->getTemplateDepth()); in VisitStmtExpr()
1281 void ASTStmtWriter::VisitChooseExpr(ChooseExpr *E) { in VisitChooseExpr() argument
1282 VisitExpr(E); in VisitChooseExpr()
1283 Record.AddStmt(E->getCond()); in VisitChooseExpr()
1284 Record.AddStmt(E->getLHS()); in VisitChooseExpr()
1285 Record.AddStmt(E->getRHS()); in VisitChooseExpr()
1286 Record.AddSourceLocation(E->getBuiltinLoc()); in VisitChooseExpr()
1287 Record.AddSourceLocation(E->getRParenLoc()); in VisitChooseExpr()
1288 Record.push_back(E->isConditionDependent() ? false : E->isConditionTrue()); in VisitChooseExpr()
1292 void ASTStmtWriter::VisitGNUNullExpr(GNUNullExpr *E) { in VisitGNUNullExpr() argument
1293 VisitExpr(E); in VisitGNUNullExpr()
1294 Record.AddSourceLocation(E->getTokenLocation()); in VisitGNUNullExpr()
1298 void ASTStmtWriter::VisitShuffleVectorExpr(ShuffleVectorExpr *E) { in VisitShuffleVectorExpr() argument
1299 VisitExpr(E); in VisitShuffleVectorExpr()
1300 Record.push_back(E->getNumSubExprs()); in VisitShuffleVectorExpr()
1301 for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) in VisitShuffleVectorExpr()
1302 Record.AddStmt(E->getExpr(I)); in VisitShuffleVectorExpr()
1303 Record.AddSourceLocation(E->getBuiltinLoc()); in VisitShuffleVectorExpr()
1304 Record.AddSourceLocation(E->getRParenLoc()); in VisitShuffleVectorExpr()
1308 void ASTStmtWriter::VisitConvertVectorExpr(ConvertVectorExpr *E) { in VisitConvertVectorExpr() argument
1309 VisitExpr(E); in VisitConvertVectorExpr()
1310 Record.AddSourceLocation(E->getBuiltinLoc()); in VisitConvertVectorExpr()
1311 Record.AddSourceLocation(E->getRParenLoc()); in VisitConvertVectorExpr()
1312 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitConvertVectorExpr()
1313 Record.AddStmt(E->getSrcExpr()); in VisitConvertVectorExpr()
1317 void ASTStmtWriter::VisitBlockExpr(BlockExpr *E) { in VisitBlockExpr() argument
1318 VisitExpr(E); in VisitBlockExpr()
1319 Record.AddDeclRef(E->getBlockDecl()); in VisitBlockExpr()
1323 void ASTStmtWriter::VisitGenericSelectionExpr(GenericSelectionExpr *E) { in VisitGenericSelectionExpr() argument
1324 VisitExpr(E); in VisitGenericSelectionExpr()
1326 Record.push_back(E->getNumAssocs()); in VisitGenericSelectionExpr()
1327 Record.push_back(E->isExprPredicate()); in VisitGenericSelectionExpr()
1328 Record.push_back(E->ResultIndex); in VisitGenericSelectionExpr()
1329 Record.AddSourceLocation(E->getGenericLoc()); in VisitGenericSelectionExpr()
1330 Record.AddSourceLocation(E->getDefaultLoc()); in VisitGenericSelectionExpr()
1331 Record.AddSourceLocation(E->getRParenLoc()); in VisitGenericSelectionExpr()
1333 Stmt **Stmts = E->getTrailingObjects<Stmt *>(); in VisitGenericSelectionExpr()
1337 for (unsigned I = 0, N = E->getNumAssocs() + 1; I < N; ++I) in VisitGenericSelectionExpr()
1340 TypeSourceInfo **TSIs = E->getTrailingObjects<TypeSourceInfo *>(); in VisitGenericSelectionExpr()
1341 for (unsigned I = 0, N = E->getNumAssocs(); I < N; ++I) in VisitGenericSelectionExpr()
1347 void ASTStmtWriter::VisitPseudoObjectExpr(PseudoObjectExpr *E) { in VisitPseudoObjectExpr() argument
1348 VisitExpr(E); in VisitPseudoObjectExpr()
1349 Record.push_back(E->getNumSemanticExprs()); in VisitPseudoObjectExpr()
1353 unsigned result = E->getResultExprIndex(); in VisitPseudoObjectExpr()
1357 Record.AddStmt(E->getSyntacticForm()); in VisitPseudoObjectExpr()
1359 i = E->semantics_begin(), e = E->semantics_end(); i != e; ++i) { in VisitPseudoObjectExpr()
1365 void ASTStmtWriter::VisitAtomicExpr(AtomicExpr *E) { in VisitAtomicExpr() argument
1366 VisitExpr(E); in VisitAtomicExpr()
1367 Record.push_back(E->getOp()); in VisitAtomicExpr()
1368 for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) in VisitAtomicExpr()
1369 Record.AddStmt(E->getSubExprs()[I]); in VisitAtomicExpr()
1370 Record.AddSourceLocation(E->getBuiltinLoc()); in VisitAtomicExpr()
1371 Record.AddSourceLocation(E->getRParenLoc()); in VisitAtomicExpr()
1379 void ASTStmtWriter::VisitObjCStringLiteral(ObjCStringLiteral *E) { in VisitObjCStringLiteral() argument
1380 VisitExpr(E); in VisitObjCStringLiteral()
1381 Record.AddStmt(E->getString()); in VisitObjCStringLiteral()
1382 Record.AddSourceLocation(E->getAtLoc()); in VisitObjCStringLiteral()
1386 void ASTStmtWriter::VisitObjCBoxedExpr(ObjCBoxedExpr *E) { in VisitObjCBoxedExpr() argument
1387 VisitExpr(E); in VisitObjCBoxedExpr()
1388 Record.AddStmt(E->getSubExpr()); in VisitObjCBoxedExpr()
1389 Record.AddDeclRef(E->getBoxingMethod()); in VisitObjCBoxedExpr()
1390 Record.AddSourceRange(E->getSourceRange()); in VisitObjCBoxedExpr()
1394 void ASTStmtWriter::VisitObjCArrayLiteral(ObjCArrayLiteral *E) { in VisitObjCArrayLiteral() argument
1395 VisitExpr(E); in VisitObjCArrayLiteral()
1396 Record.push_back(E->getNumElements()); in VisitObjCArrayLiteral()
1397 for (unsigned i = 0; i < E->getNumElements(); i++) in VisitObjCArrayLiteral()
1398 Record.AddStmt(E->getElement(i)); in VisitObjCArrayLiteral()
1399 Record.AddDeclRef(E->getArrayWithObjectsMethod()); in VisitObjCArrayLiteral()
1400 Record.AddSourceRange(E->getSourceRange()); in VisitObjCArrayLiteral()
1404 void ASTStmtWriter::VisitObjCDictionaryLiteral(ObjCDictionaryLiteral *E) { in VisitObjCDictionaryLiteral() argument
1405 VisitExpr(E); in VisitObjCDictionaryLiteral()
1406 Record.push_back(E->getNumElements()); in VisitObjCDictionaryLiteral()
1407 Record.push_back(E->HasPackExpansions); in VisitObjCDictionaryLiteral()
1408 for (unsigned i = 0; i < E->getNumElements(); i++) { in VisitObjCDictionaryLiteral()
1409 ObjCDictionaryElement Element = E->getKeyValueElement(i); in VisitObjCDictionaryLiteral()
1412 if (E->HasPackExpansions) { in VisitObjCDictionaryLiteral()
1421 Record.AddDeclRef(E->getDictWithObjectsMethod()); in VisitObjCDictionaryLiteral()
1422 Record.AddSourceRange(E->getSourceRange()); in VisitObjCDictionaryLiteral()
1426 void ASTStmtWriter::VisitObjCEncodeExpr(ObjCEncodeExpr *E) { in VisitObjCEncodeExpr() argument
1427 VisitExpr(E); in VisitObjCEncodeExpr()
1428 Record.AddTypeSourceInfo(E->getEncodedTypeSourceInfo()); in VisitObjCEncodeExpr()
1429 Record.AddSourceLocation(E->getAtLoc()); in VisitObjCEncodeExpr()
1430 Record.AddSourceLocation(E->getRParenLoc()); in VisitObjCEncodeExpr()
1434 void ASTStmtWriter::VisitObjCSelectorExpr(ObjCSelectorExpr *E) { in VisitObjCSelectorExpr() argument
1435 VisitExpr(E); in VisitObjCSelectorExpr()
1436 Record.AddSelectorRef(E->getSelector()); in VisitObjCSelectorExpr()
1437 Record.AddSourceLocation(E->getAtLoc()); in VisitObjCSelectorExpr()
1438 Record.AddSourceLocation(E->getRParenLoc()); in VisitObjCSelectorExpr()
1442 void ASTStmtWriter::VisitObjCProtocolExpr(ObjCProtocolExpr *E) { in VisitObjCProtocolExpr() argument
1443 VisitExpr(E); in VisitObjCProtocolExpr()
1444 Record.AddDeclRef(E->getProtocol()); in VisitObjCProtocolExpr()
1445 Record.AddSourceLocation(E->getAtLoc()); in VisitObjCProtocolExpr()
1446 Record.AddSourceLocation(E->ProtoLoc); in VisitObjCProtocolExpr()
1447 Record.AddSourceLocation(E->getRParenLoc()); in VisitObjCProtocolExpr()
1451 void ASTStmtWriter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *E) { in VisitObjCIvarRefExpr() argument
1452 VisitExpr(E); in VisitObjCIvarRefExpr()
1453 Record.AddDeclRef(E->getDecl()); in VisitObjCIvarRefExpr()
1454 Record.AddSourceLocation(E->getLocation()); in VisitObjCIvarRefExpr()
1455 Record.AddSourceLocation(E->getOpLoc()); in VisitObjCIvarRefExpr()
1456 Record.AddStmt(E->getBase()); in VisitObjCIvarRefExpr()
1457 Record.push_back(E->isArrow()); in VisitObjCIvarRefExpr()
1458 Record.push_back(E->isFreeIvar()); in VisitObjCIvarRefExpr()
1462 void ASTStmtWriter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) { in VisitObjCPropertyRefExpr() argument
1463 VisitExpr(E); in VisitObjCPropertyRefExpr()
1464 Record.push_back(E->SetterAndMethodRefFlags.getInt()); in VisitObjCPropertyRefExpr()
1465 Record.push_back(E->isImplicitProperty()); in VisitObjCPropertyRefExpr()
1466 if (E->isImplicitProperty()) { in VisitObjCPropertyRefExpr()
1467 Record.AddDeclRef(E->getImplicitPropertyGetter()); in VisitObjCPropertyRefExpr()
1468 Record.AddDeclRef(E->getImplicitPropertySetter()); in VisitObjCPropertyRefExpr()
1470 Record.AddDeclRef(E->getExplicitProperty()); in VisitObjCPropertyRefExpr()
1472 Record.AddSourceLocation(E->getLocation()); in VisitObjCPropertyRefExpr()
1473 Record.AddSourceLocation(E->getReceiverLocation()); in VisitObjCPropertyRefExpr()
1474 if (E->isObjectReceiver()) { in VisitObjCPropertyRefExpr()
1476 Record.AddStmt(E->getBase()); in VisitObjCPropertyRefExpr()
1477 } else if (E->isSuperReceiver()) { in VisitObjCPropertyRefExpr()
1479 Record.AddTypeRef(E->getSuperReceiverType()); in VisitObjCPropertyRefExpr()
1482 Record.AddDeclRef(E->getClassReceiver()); in VisitObjCPropertyRefExpr()
1488 void ASTStmtWriter::VisitObjCSubscriptRefExpr(ObjCSubscriptRefExpr *E) { in VisitObjCSubscriptRefExpr() argument
1489 VisitExpr(E); in VisitObjCSubscriptRefExpr()
1490 Record.AddSourceLocation(E->getRBracket()); in VisitObjCSubscriptRefExpr()
1491 Record.AddStmt(E->getBaseExpr()); in VisitObjCSubscriptRefExpr()
1492 Record.AddStmt(E->getKeyExpr()); in VisitObjCSubscriptRefExpr()
1493 Record.AddDeclRef(E->getAtIndexMethodDecl()); in VisitObjCSubscriptRefExpr()
1494 Record.AddDeclRef(E->setAtIndexMethodDecl()); in VisitObjCSubscriptRefExpr()
1499 void ASTStmtWriter::VisitObjCMessageExpr(ObjCMessageExpr *E) { in VisitObjCMessageExpr() argument
1500 VisitExpr(E); in VisitObjCMessageExpr()
1501 Record.push_back(E->getNumArgs()); in VisitObjCMessageExpr()
1502 Record.push_back(E->getNumStoredSelLocs()); in VisitObjCMessageExpr()
1503 Record.push_back(E->SelLocsKind); in VisitObjCMessageExpr()
1504 Record.push_back(E->isDelegateInitCall()); in VisitObjCMessageExpr()
1505 Record.push_back(E->IsImplicit); in VisitObjCMessageExpr()
1506 Record.push_back((unsigned)E->getReceiverKind()); // FIXME: stable encoding in VisitObjCMessageExpr()
1507 switch (E->getReceiverKind()) { in VisitObjCMessageExpr()
1509 Record.AddStmt(E->getInstanceReceiver()); in VisitObjCMessageExpr()
1513 Record.AddTypeSourceInfo(E->getClassReceiverTypeInfo()); in VisitObjCMessageExpr()
1518 Record.AddTypeRef(E->getSuperType()); in VisitObjCMessageExpr()
1519 Record.AddSourceLocation(E->getSuperLoc()); in VisitObjCMessageExpr()
1523 if (E->getMethodDecl()) { in VisitObjCMessageExpr()
1525 Record.AddDeclRef(E->getMethodDecl()); in VisitObjCMessageExpr()
1528 Record.AddSelectorRef(E->getSelector()); in VisitObjCMessageExpr()
1531 Record.AddSourceLocation(E->getLeftLoc()); in VisitObjCMessageExpr()
1532 Record.AddSourceLocation(E->getRightLoc()); in VisitObjCMessageExpr()
1534 for (CallExpr::arg_iterator Arg = E->arg_begin(), ArgEnd = E->arg_end(); in VisitObjCMessageExpr()
1538 SourceLocation *Locs = E->getStoredSelLocs(); in VisitObjCMessageExpr()
1539 for (unsigned i = 0, e = E->getNumStoredSelLocs(); i != e; ++i) in VisitObjCMessageExpr()
1606 void ASTStmtWriter::VisitObjCBoolLiteralExpr(ObjCBoolLiteralExpr *E) { in VisitObjCBoolLiteralExpr() argument
1607 VisitExpr(E); in VisitObjCBoolLiteralExpr()
1608 Record.push_back(E->getValue()); in VisitObjCBoolLiteralExpr()
1609 Record.AddSourceLocation(E->getLocation()); in VisitObjCBoolLiteralExpr()
1613 void ASTStmtWriter::VisitObjCAvailabilityCheckExpr(ObjCAvailabilityCheckExpr *E) { in VisitObjCAvailabilityCheckExpr() argument
1614 VisitExpr(E); in VisitObjCAvailabilityCheckExpr()
1615 Record.AddSourceRange(E->getSourceRange()); in VisitObjCAvailabilityCheckExpr()
1616 Record.AddVersionTuple(E->getVersion()); in VisitObjCAvailabilityCheckExpr()
1669 void ASTStmtWriter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E) { in VisitCXXOperatorCallExpr() argument
1670 VisitCallExpr(E); in VisitCXXOperatorCallExpr()
1671 Record.push_back(E->getOperator()); in VisitCXXOperatorCallExpr()
1672 Record.AddSourceRange(E->Range); in VisitCXXOperatorCallExpr()
1674 if (!E->hasStoredFPFeatures() && !static_cast<bool>(E->getADLCallKind())) in VisitCXXOperatorCallExpr()
1680 void ASTStmtWriter::VisitCXXMemberCallExpr(CXXMemberCallExpr *E) { in VisitCXXMemberCallExpr() argument
1681 VisitCallExpr(E); in VisitCXXMemberCallExpr()
1683 if (!E->hasStoredFPFeatures() && !static_cast<bool>(E->getADLCallKind())) in VisitCXXMemberCallExpr()
1690 CXXRewrittenBinaryOperator *E) { in VisitCXXRewrittenBinaryOperator() argument
1691 VisitExpr(E); in VisitCXXRewrittenBinaryOperator()
1692 Record.push_back(E->isReversed()); in VisitCXXRewrittenBinaryOperator()
1693 Record.AddStmt(E->getSemanticForm()); in VisitCXXRewrittenBinaryOperator()
1697 void ASTStmtWriter::VisitCXXConstructExpr(CXXConstructExpr *E) { in VisitCXXConstructExpr() argument
1698 VisitExpr(E); in VisitCXXConstructExpr()
1700 Record.push_back(E->getNumArgs()); in VisitCXXConstructExpr()
1701 Record.push_back(E->isElidable()); in VisitCXXConstructExpr()
1702 Record.push_back(E->hadMultipleCandidates()); in VisitCXXConstructExpr()
1703 Record.push_back(E->isListInitialization()); in VisitCXXConstructExpr()
1704 Record.push_back(E->isStdInitListInitialization()); in VisitCXXConstructExpr()
1705 Record.push_back(E->requiresZeroInitialization()); in VisitCXXConstructExpr()
1707 llvm::to_underlying(E->getConstructionKind())); // FIXME: stable encoding in VisitCXXConstructExpr()
1708 Record.push_back(E->isImmediateEscalating()); in VisitCXXConstructExpr()
1709 Record.AddSourceLocation(E->getLocation()); in VisitCXXConstructExpr()
1710 Record.AddDeclRef(E->getConstructor()); in VisitCXXConstructExpr()
1711 Record.AddSourceRange(E->getParenOrBraceRange()); in VisitCXXConstructExpr()
1713 for (unsigned I = 0, N = E->getNumArgs(); I != N; ++I) in VisitCXXConstructExpr()
1714 Record.AddStmt(E->getArg(I)); in VisitCXXConstructExpr()
1719 void ASTStmtWriter::VisitCXXInheritedCtorInitExpr(CXXInheritedCtorInitExpr *E) { in VisitCXXInheritedCtorInitExpr() argument
1720 VisitExpr(E); in VisitCXXInheritedCtorInitExpr()
1721 Record.AddDeclRef(E->getConstructor()); in VisitCXXInheritedCtorInitExpr()
1722 Record.AddSourceLocation(E->getLocation()); in VisitCXXInheritedCtorInitExpr()
1723 Record.push_back(E->constructsVBase()); in VisitCXXInheritedCtorInitExpr()
1724 Record.push_back(E->inheritedFromVBase()); in VisitCXXInheritedCtorInitExpr()
1728 void ASTStmtWriter::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E) { in VisitCXXTemporaryObjectExpr() argument
1729 VisitCXXConstructExpr(E); in VisitCXXTemporaryObjectExpr()
1730 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitCXXTemporaryObjectExpr()
1734 void ASTStmtWriter::VisitLambdaExpr(LambdaExpr *E) { in VisitLambdaExpr() argument
1735 VisitExpr(E); in VisitLambdaExpr()
1736 Record.push_back(E->LambdaExprBits.NumCaptures); in VisitLambdaExpr()
1737 Record.AddSourceRange(E->IntroducerRange); in VisitLambdaExpr()
1738 Record.push_back(E->LambdaExprBits.CaptureDefault); // FIXME: stable encoding in VisitLambdaExpr()
1739 Record.AddSourceLocation(E->CaptureDefaultLoc); in VisitLambdaExpr()
1740 Record.push_back(E->LambdaExprBits.ExplicitParams); in VisitLambdaExpr()
1741 Record.push_back(E->LambdaExprBits.ExplicitResultType); in VisitLambdaExpr()
1742 Record.AddSourceLocation(E->ClosingBrace); in VisitLambdaExpr()
1745 for (LambdaExpr::capture_init_iterator C = E->capture_init_begin(), in VisitLambdaExpr()
1746 CEnd = E->capture_init_end(); in VisitLambdaExpr()
1757 void ASTStmtWriter::VisitCXXStdInitializerListExpr(CXXStdInitializerListExpr *E) { in VisitCXXStdInitializerListExpr() argument
1758 VisitExpr(E); in VisitCXXStdInitializerListExpr()
1759 Record.AddStmt(E->getSubExpr()); in VisitCXXStdInitializerListExpr()
1763 void ASTStmtWriter::VisitCXXNamedCastExpr(CXXNamedCastExpr *E) { in VisitCXXNamedCastExpr() argument
1764 VisitExplicitCastExpr(E); in VisitCXXNamedCastExpr()
1765 Record.AddSourceRange(SourceRange(E->getOperatorLoc(), E->getRParenLoc())); in VisitCXXNamedCastExpr()
1766 CurrentPackingBits.addBit(E->getAngleBrackets().isValid()); in VisitCXXNamedCastExpr()
1767 if (E->getAngleBrackets().isValid()) in VisitCXXNamedCastExpr()
1768 Record.AddSourceRange(E->getAngleBrackets()); in VisitCXXNamedCastExpr()
1771 void ASTStmtWriter::VisitCXXStaticCastExpr(CXXStaticCastExpr *E) { in VisitCXXStaticCastExpr() argument
1772 VisitCXXNamedCastExpr(E); in VisitCXXStaticCastExpr()
1776 void ASTStmtWriter::VisitCXXDynamicCastExpr(CXXDynamicCastExpr *E) { in VisitCXXDynamicCastExpr() argument
1777 VisitCXXNamedCastExpr(E); in VisitCXXDynamicCastExpr()
1781 void ASTStmtWriter::VisitCXXReinterpretCastExpr(CXXReinterpretCastExpr *E) { in VisitCXXReinterpretCastExpr() argument
1782 VisitCXXNamedCastExpr(E); in VisitCXXReinterpretCastExpr()
1786 void ASTStmtWriter::VisitCXXConstCastExpr(CXXConstCastExpr *E) { in VisitCXXConstCastExpr() argument
1787 VisitCXXNamedCastExpr(E); in VisitCXXConstCastExpr()
1791 void ASTStmtWriter::VisitCXXAddrspaceCastExpr(CXXAddrspaceCastExpr *E) { in VisitCXXAddrspaceCastExpr() argument
1792 VisitCXXNamedCastExpr(E); in VisitCXXAddrspaceCastExpr()
1796 void ASTStmtWriter::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E) { in VisitCXXFunctionalCastExpr() argument
1797 VisitExplicitCastExpr(E); in VisitCXXFunctionalCastExpr()
1798 Record.AddSourceLocation(E->getLParenLoc()); in VisitCXXFunctionalCastExpr()
1799 Record.AddSourceLocation(E->getRParenLoc()); in VisitCXXFunctionalCastExpr()
1803 void ASTStmtWriter::VisitBuiltinBitCastExpr(BuiltinBitCastExpr *E) { in VisitBuiltinBitCastExpr() argument
1804 VisitExplicitCastExpr(E); in VisitBuiltinBitCastExpr()
1805 Record.AddSourceLocation(E->getBeginLoc()); in VisitBuiltinBitCastExpr()
1806 Record.AddSourceLocation(E->getEndLoc()); in VisitBuiltinBitCastExpr()
1810 void ASTStmtWriter::VisitUserDefinedLiteral(UserDefinedLiteral *E) { in VisitUserDefinedLiteral() argument
1811 VisitCallExpr(E); in VisitUserDefinedLiteral()
1812 Record.AddSourceLocation(E->UDSuffixLoc); in VisitUserDefinedLiteral()
1816 void ASTStmtWriter::VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *E) { in VisitCXXBoolLiteralExpr() argument
1817 VisitExpr(E); in VisitCXXBoolLiteralExpr()
1818 Record.push_back(E->getValue()); in VisitCXXBoolLiteralExpr()
1819 Record.AddSourceLocation(E->getLocation()); in VisitCXXBoolLiteralExpr()
1823 void ASTStmtWriter::VisitCXXNullPtrLiteralExpr(CXXNullPtrLiteralExpr *E) { in VisitCXXNullPtrLiteralExpr() argument
1824 VisitExpr(E); in VisitCXXNullPtrLiteralExpr()
1825 Record.AddSourceLocation(E->getLocation()); in VisitCXXNullPtrLiteralExpr()
1829 void ASTStmtWriter::VisitCXXTypeidExpr(CXXTypeidExpr *E) { in VisitCXXTypeidExpr() argument
1830 VisitExpr(E); in VisitCXXTypeidExpr()
1831 Record.AddSourceRange(E->getSourceRange()); in VisitCXXTypeidExpr()
1832 if (E->isTypeOperand()) { in VisitCXXTypeidExpr()
1833 Record.AddTypeSourceInfo(E->getTypeOperandSourceInfo()); in VisitCXXTypeidExpr()
1836 Record.AddStmt(E->getExprOperand()); in VisitCXXTypeidExpr()
1841 void ASTStmtWriter::VisitCXXThisExpr(CXXThisExpr *E) { in VisitCXXThisExpr() argument
1842 VisitExpr(E); in VisitCXXThisExpr()
1843 Record.AddSourceLocation(E->getLocation()); in VisitCXXThisExpr()
1844 Record.push_back(E->isImplicit()); in VisitCXXThisExpr()
1849 void ASTStmtWriter::VisitCXXThrowExpr(CXXThrowExpr *E) { in VisitCXXThrowExpr() argument
1850 VisitExpr(E); in VisitCXXThrowExpr()
1851 Record.AddSourceLocation(E->getThrowLoc()); in VisitCXXThrowExpr()
1852 Record.AddStmt(E->getSubExpr()); in VisitCXXThrowExpr()
1853 Record.push_back(E->isThrownVariableInScope()); in VisitCXXThrowExpr()
1857 void ASTStmtWriter::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { in VisitCXXDefaultArgExpr() argument
1858 VisitExpr(E); in VisitCXXDefaultArgExpr()
1859 Record.AddDeclRef(E->getParam()); in VisitCXXDefaultArgExpr()
1860 Record.AddDeclRef(cast_or_null<Decl>(E->getUsedContext())); in VisitCXXDefaultArgExpr()
1861 Record.AddSourceLocation(E->getUsedLocation()); in VisitCXXDefaultArgExpr()
1862 Record.push_back(E->hasRewrittenInit()); in VisitCXXDefaultArgExpr()
1863 if (E->hasRewrittenInit()) in VisitCXXDefaultArgExpr()
1864 Record.AddStmt(E->getRewrittenExpr()); in VisitCXXDefaultArgExpr()
1868 void ASTStmtWriter::VisitCXXDefaultInitExpr(CXXDefaultInitExpr *E) { in VisitCXXDefaultInitExpr() argument
1869 VisitExpr(E); in VisitCXXDefaultInitExpr()
1870 Record.push_back(E->hasRewrittenInit()); in VisitCXXDefaultInitExpr()
1871 Record.AddDeclRef(E->getField()); in VisitCXXDefaultInitExpr()
1872 Record.AddDeclRef(cast_or_null<Decl>(E->getUsedContext())); in VisitCXXDefaultInitExpr()
1873 Record.AddSourceLocation(E->getExprLoc()); in VisitCXXDefaultInitExpr()
1874 if (E->hasRewrittenInit()) in VisitCXXDefaultInitExpr()
1875 Record.AddStmt(E->getRewrittenExpr()); in VisitCXXDefaultInitExpr()
1879 void ASTStmtWriter::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) { in VisitCXXBindTemporaryExpr() argument
1880 VisitExpr(E); in VisitCXXBindTemporaryExpr()
1881 Record.AddCXXTemporary(E->getTemporary()); in VisitCXXBindTemporaryExpr()
1882 Record.AddStmt(E->getSubExpr()); in VisitCXXBindTemporaryExpr()
1886 void ASTStmtWriter::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E) { in VisitCXXScalarValueInitExpr() argument
1887 VisitExpr(E); in VisitCXXScalarValueInitExpr()
1888 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitCXXScalarValueInitExpr()
1889 Record.AddSourceLocation(E->getRParenLoc()); in VisitCXXScalarValueInitExpr()
1893 void ASTStmtWriter::VisitCXXNewExpr(CXXNewExpr *E) { in VisitCXXNewExpr() argument
1894 VisitExpr(E); in VisitCXXNewExpr()
1896 Record.push_back(E->isArray()); in VisitCXXNewExpr()
1897 Record.push_back(E->hasInitializer()); in VisitCXXNewExpr()
1898 Record.push_back(E->getNumPlacementArgs()); in VisitCXXNewExpr()
1899 Record.push_back(E->isParenTypeId()); in VisitCXXNewExpr()
1901 Record.push_back(E->isGlobalNew()); in VisitCXXNewExpr()
1902 Record.push_back(E->passAlignment()); in VisitCXXNewExpr()
1903 Record.push_back(E->doesUsualArrayDeleteWantSize()); in VisitCXXNewExpr()
1904 Record.push_back(E->CXXNewExprBits.HasInitializer); in VisitCXXNewExpr()
1905 Record.push_back(E->CXXNewExprBits.StoredInitializationStyle); in VisitCXXNewExpr()
1907 Record.AddDeclRef(E->getOperatorNew()); in VisitCXXNewExpr()
1908 Record.AddDeclRef(E->getOperatorDelete()); in VisitCXXNewExpr()
1909 Record.AddTypeSourceInfo(E->getAllocatedTypeSourceInfo()); in VisitCXXNewExpr()
1910 if (E->isParenTypeId()) in VisitCXXNewExpr()
1911 Record.AddSourceRange(E->getTypeIdParens()); in VisitCXXNewExpr()
1912 Record.AddSourceRange(E->getSourceRange()); in VisitCXXNewExpr()
1913 Record.AddSourceRange(E->getDirectInitRange()); in VisitCXXNewExpr()
1915 for (CXXNewExpr::arg_iterator I = E->raw_arg_begin(), N = E->raw_arg_end(); in VisitCXXNewExpr()
1922 void ASTStmtWriter::VisitCXXDeleteExpr(CXXDeleteExpr *E) { in VisitCXXDeleteExpr() argument
1923 VisitExpr(E); in VisitCXXDeleteExpr()
1924 Record.push_back(E->isGlobalDelete()); in VisitCXXDeleteExpr()
1925 Record.push_back(E->isArrayForm()); in VisitCXXDeleteExpr()
1926 Record.push_back(E->isArrayFormAsWritten()); in VisitCXXDeleteExpr()
1927 Record.push_back(E->doesUsualArrayDeleteWantSize()); in VisitCXXDeleteExpr()
1928 Record.AddDeclRef(E->getOperatorDelete()); in VisitCXXDeleteExpr()
1929 Record.AddStmt(E->getArgument()); in VisitCXXDeleteExpr()
1930 Record.AddSourceLocation(E->getBeginLoc()); in VisitCXXDeleteExpr()
1935 void ASTStmtWriter::VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E) { in VisitCXXPseudoDestructorExpr() argument
1936 VisitExpr(E); in VisitCXXPseudoDestructorExpr()
1938 Record.AddStmt(E->getBase()); in VisitCXXPseudoDestructorExpr()
1939 Record.push_back(E->isArrow()); in VisitCXXPseudoDestructorExpr()
1940 Record.AddSourceLocation(E->getOperatorLoc()); in VisitCXXPseudoDestructorExpr()
1941 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitCXXPseudoDestructorExpr()
1942 Record.AddTypeSourceInfo(E->getScopeTypeInfo()); in VisitCXXPseudoDestructorExpr()
1943 Record.AddSourceLocation(E->getColonColonLoc()); in VisitCXXPseudoDestructorExpr()
1944 Record.AddSourceLocation(E->getTildeLoc()); in VisitCXXPseudoDestructorExpr()
1947 Record.AddIdentifierRef(E->getDestroyedTypeIdentifier()); in VisitCXXPseudoDestructorExpr()
1948 if (E->getDestroyedTypeIdentifier()) in VisitCXXPseudoDestructorExpr()
1949 Record.AddSourceLocation(E->getDestroyedTypeLoc()); in VisitCXXPseudoDestructorExpr()
1951 Record.AddTypeSourceInfo(E->getDestroyedTypeInfo()); in VisitCXXPseudoDestructorExpr()
1956 void ASTStmtWriter::VisitExprWithCleanups(ExprWithCleanups *E) { in VisitExprWithCleanups() argument
1957 VisitExpr(E); in VisitExprWithCleanups()
1958 Record.push_back(E->getNumObjects()); in VisitExprWithCleanups()
1959 for (auto &Obj : E->getObjects()) { in VisitExprWithCleanups()
1969 Record.push_back(E->cleanupsHaveSideEffects()); in VisitExprWithCleanups()
1970 Record.AddStmt(E->getSubExpr()); in VisitExprWithCleanups()
1975 CXXDependentScopeMemberExpr *E) { in VisitCXXDependentScopeMemberExpr() argument
1976 VisitExpr(E); in VisitCXXDependentScopeMemberExpr()
1980 Record.push_back(E->getNumTemplateArgs()); in VisitCXXDependentScopeMemberExpr()
1982 CurrentPackingBits.addBit(E->hasTemplateKWAndArgsInfo()); in VisitCXXDependentScopeMemberExpr()
1983 CurrentPackingBits.addBit(E->hasFirstQualifierFoundInScope()); in VisitCXXDependentScopeMemberExpr()
1985 if (E->hasTemplateKWAndArgsInfo()) { in VisitCXXDependentScopeMemberExpr()
1987 *E->getTrailingObjects<ASTTemplateKWAndArgsInfo>(); in VisitCXXDependentScopeMemberExpr()
1989 E->getTrailingObjects<TemplateArgumentLoc>()); in VisitCXXDependentScopeMemberExpr()
1992 CurrentPackingBits.addBit(E->isArrow()); in VisitCXXDependentScopeMemberExpr()
1994 Record.AddTypeRef(E->getBaseType()); in VisitCXXDependentScopeMemberExpr()
1995 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitCXXDependentScopeMemberExpr()
1996 CurrentPackingBits.addBit(!E->isImplicitAccess()); in VisitCXXDependentScopeMemberExpr()
1997 if (!E->isImplicitAccess()) in VisitCXXDependentScopeMemberExpr()
1998 Record.AddStmt(E->getBase()); in VisitCXXDependentScopeMemberExpr()
2000 Record.AddSourceLocation(E->getOperatorLoc()); in VisitCXXDependentScopeMemberExpr()
2002 if (E->hasFirstQualifierFoundInScope()) in VisitCXXDependentScopeMemberExpr()
2003 Record.AddDeclRef(E->getFirstQualifierFoundInScope()); in VisitCXXDependentScopeMemberExpr()
2005 Record.AddDeclarationNameInfo(E->MemberNameInfo); in VisitCXXDependentScopeMemberExpr()
2010 ASTStmtWriter::VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E) { in VisitDependentScopeDeclRefExpr() argument
2011 VisitExpr(E); in VisitDependentScopeDeclRefExpr()
2016 E->DependentScopeDeclRefExprBits.HasTemplateKWAndArgsInfo); in VisitDependentScopeDeclRefExpr()
2018 if (E->DependentScopeDeclRefExprBits.HasTemplateKWAndArgsInfo) { in VisitDependentScopeDeclRefExpr()
2020 *E->getTrailingObjects<ASTTemplateKWAndArgsInfo>(); in VisitDependentScopeDeclRefExpr()
2024 E->getTrailingObjects<TemplateArgumentLoc>()); in VisitDependentScopeDeclRefExpr()
2027 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitDependentScopeDeclRefExpr()
2028 Record.AddDeclarationNameInfo(E->NameInfo); in VisitDependentScopeDeclRefExpr()
2033 ASTStmtWriter::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) { in VisitCXXUnresolvedConstructExpr() argument
2034 VisitExpr(E); in VisitCXXUnresolvedConstructExpr()
2035 Record.push_back(E->getNumArgs()); in VisitCXXUnresolvedConstructExpr()
2037 ArgI = E->arg_begin(), ArgE = E->arg_end(); ArgI != ArgE; ++ArgI) in VisitCXXUnresolvedConstructExpr()
2039 Record.AddTypeSourceInfo(E->getTypeSourceInfo()); in VisitCXXUnresolvedConstructExpr()
2040 Record.AddSourceLocation(E->getLParenLoc()); in VisitCXXUnresolvedConstructExpr()
2041 Record.AddSourceLocation(E->getRParenLoc()); in VisitCXXUnresolvedConstructExpr()
2042 Record.push_back(E->isListInitialization()); in VisitCXXUnresolvedConstructExpr()
2046 void ASTStmtWriter::VisitOverloadExpr(OverloadExpr *E) { in VisitOverloadExpr() argument
2047 VisitExpr(E); in VisitOverloadExpr()
2049 Record.push_back(E->getNumDecls()); in VisitOverloadExpr()
2052 CurrentPackingBits.addBit(E->hasTemplateKWAndArgsInfo()); in VisitOverloadExpr()
2053 if (E->hasTemplateKWAndArgsInfo()) { in VisitOverloadExpr()
2055 *E->getTrailingASTTemplateKWAndArgsInfo(); in VisitOverloadExpr()
2057 AddTemplateKWAndArgsInfo(ArgInfo, E->getTrailingTemplateArgumentLoc()); in VisitOverloadExpr()
2060 for (OverloadExpr::decls_iterator OvI = E->decls_begin(), in VisitOverloadExpr()
2061 OvE = E->decls_end(); in VisitOverloadExpr()
2067 Record.AddDeclarationNameInfo(E->getNameInfo()); in VisitOverloadExpr()
2068 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitOverloadExpr()
2071 void ASTStmtWriter::VisitUnresolvedMemberExpr(UnresolvedMemberExpr *E) { in VisitUnresolvedMemberExpr() argument
2072 VisitOverloadExpr(E); in VisitUnresolvedMemberExpr()
2073 CurrentPackingBits.addBit(E->isArrow()); in VisitUnresolvedMemberExpr()
2074 CurrentPackingBits.addBit(E->hasUnresolvedUsing()); in VisitUnresolvedMemberExpr()
2075 CurrentPackingBits.addBit(!E->isImplicitAccess()); in VisitUnresolvedMemberExpr()
2076 if (!E->isImplicitAccess()) in VisitUnresolvedMemberExpr()
2077 Record.AddStmt(E->getBase()); in VisitUnresolvedMemberExpr()
2079 Record.AddSourceLocation(E->getOperatorLoc()); in VisitUnresolvedMemberExpr()
2081 Record.AddTypeRef(E->getBaseType()); in VisitUnresolvedMemberExpr()
2085 void ASTStmtWriter::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E) { in VisitUnresolvedLookupExpr() argument
2086 VisitOverloadExpr(E); in VisitUnresolvedLookupExpr()
2087 CurrentPackingBits.addBit(E->requiresADL()); in VisitUnresolvedLookupExpr()
2088 CurrentPackingBits.addBit(E->isOverloaded()); in VisitUnresolvedLookupExpr()
2089 Record.AddDeclRef(E->getNamingClass()); in VisitUnresolvedLookupExpr()
2093 void ASTStmtWriter::VisitTypeTraitExpr(TypeTraitExpr *E) { in VisitTypeTraitExpr() argument
2094 VisitExpr(E); in VisitTypeTraitExpr()
2095 Record.push_back(E->TypeTraitExprBits.NumArgs); in VisitTypeTraitExpr()
2096 Record.push_back(E->TypeTraitExprBits.Kind); // FIXME: Stable encoding in VisitTypeTraitExpr()
2097 Record.push_back(E->TypeTraitExprBits.Value); in VisitTypeTraitExpr()
2098 Record.AddSourceRange(E->getSourceRange()); in VisitTypeTraitExpr()
2099 for (unsigned I = 0, N = E->getNumArgs(); I != N; ++I) in VisitTypeTraitExpr()
2100 Record.AddTypeSourceInfo(E->getArg(I)); in VisitTypeTraitExpr()
2104 void ASTStmtWriter::VisitArrayTypeTraitExpr(ArrayTypeTraitExpr *E) { in VisitArrayTypeTraitExpr() argument
2105 VisitExpr(E); in VisitArrayTypeTraitExpr()
2106 Record.push_back(E->getTrait()); in VisitArrayTypeTraitExpr()
2107 Record.push_back(E->getValue()); in VisitArrayTypeTraitExpr()
2108 Record.AddSourceRange(E->getSourceRange()); in VisitArrayTypeTraitExpr()
2109 Record.AddTypeSourceInfo(E->getQueriedTypeSourceInfo()); in VisitArrayTypeTraitExpr()
2110 Record.AddStmt(E->getDimensionExpression()); in VisitArrayTypeTraitExpr()
2114 void ASTStmtWriter::VisitExpressionTraitExpr(ExpressionTraitExpr *E) { in VisitExpressionTraitExpr() argument
2115 VisitExpr(E); in VisitExpressionTraitExpr()
2116 Record.push_back(E->getTrait()); in VisitExpressionTraitExpr()
2117 Record.push_back(E->getValue()); in VisitExpressionTraitExpr()
2118 Record.AddSourceRange(E->getSourceRange()); in VisitExpressionTraitExpr()
2119 Record.AddStmt(E->getQueriedExpression()); in VisitExpressionTraitExpr()
2123 void ASTStmtWriter::VisitCXXNoexceptExpr(CXXNoexceptExpr *E) { in VisitCXXNoexceptExpr() argument
2124 VisitExpr(E); in VisitCXXNoexceptExpr()
2125 Record.push_back(E->getValue()); in VisitCXXNoexceptExpr()
2126 Record.AddSourceRange(E->getSourceRange()); in VisitCXXNoexceptExpr()
2127 Record.AddStmt(E->getOperand()); in VisitCXXNoexceptExpr()
2131 void ASTStmtWriter::VisitPackExpansionExpr(PackExpansionExpr *E) { in VisitPackExpansionExpr() argument
2132 VisitExpr(E); in VisitPackExpansionExpr()
2133 Record.AddSourceLocation(E->getEllipsisLoc()); in VisitPackExpansionExpr()
2134 Record.push_back(E->NumExpansions); in VisitPackExpansionExpr()
2135 Record.AddStmt(E->getPattern()); in VisitPackExpansionExpr()
2139 void ASTStmtWriter::VisitSizeOfPackExpr(SizeOfPackExpr *E) { in VisitSizeOfPackExpr() argument
2140 VisitExpr(E); in VisitSizeOfPackExpr()
2141 Record.push_back(E->isPartiallySubstituted() ? E->getPartialArguments().size() in VisitSizeOfPackExpr()
2143 Record.AddSourceLocation(E->OperatorLoc); in VisitSizeOfPackExpr()
2144 Record.AddSourceLocation(E->PackLoc); in VisitSizeOfPackExpr()
2145 Record.AddSourceLocation(E->RParenLoc); in VisitSizeOfPackExpr()
2146 Record.AddDeclRef(E->Pack); in VisitSizeOfPackExpr()
2147 if (E->isPartiallySubstituted()) { in VisitSizeOfPackExpr()
2148 for (const auto &TA : E->getPartialArguments()) in VisitSizeOfPackExpr()
2150 } else if (!E->isValueDependent()) { in VisitSizeOfPackExpr()
2151 Record.push_back(E->getPackLength()); in VisitSizeOfPackExpr()
2157 SubstNonTypeTemplateParmExpr *E) { in VisitSubstNonTypeTemplateParmExpr() argument
2158 VisitExpr(E); in VisitSubstNonTypeTemplateParmExpr()
2159 Record.AddDeclRef(E->getAssociatedDecl()); in VisitSubstNonTypeTemplateParmExpr()
2160 CurrentPackingBits.addBit(E->isReferenceParameter()); in VisitSubstNonTypeTemplateParmExpr()
2161 CurrentPackingBits.addBits(E->getIndex(), /*Width=*/12); in VisitSubstNonTypeTemplateParmExpr()
2162 CurrentPackingBits.addBit((bool)E->getPackIndex()); in VisitSubstNonTypeTemplateParmExpr()
2163 if (auto PackIndex = E->getPackIndex()) in VisitSubstNonTypeTemplateParmExpr()
2166 Record.AddSourceLocation(E->getNameLoc()); in VisitSubstNonTypeTemplateParmExpr()
2167 Record.AddStmt(E->getReplacement()); in VisitSubstNonTypeTemplateParmExpr()
2172 SubstNonTypeTemplateParmPackExpr *E) { in VisitSubstNonTypeTemplateParmPackExpr() argument
2173 VisitExpr(E); in VisitSubstNonTypeTemplateParmPackExpr()
2174 Record.AddDeclRef(E->getAssociatedDecl()); in VisitSubstNonTypeTemplateParmPackExpr()
2175 Record.push_back(E->getIndex()); in VisitSubstNonTypeTemplateParmPackExpr()
2176 Record.AddTemplateArgument(E->getArgumentPack()); in VisitSubstNonTypeTemplateParmPackExpr()
2177 Record.AddSourceLocation(E->getParameterPackLocation()); in VisitSubstNonTypeTemplateParmPackExpr()
2181 void ASTStmtWriter::VisitFunctionParmPackExpr(FunctionParmPackExpr *E) { in VisitFunctionParmPackExpr() argument
2182 VisitExpr(E); in VisitFunctionParmPackExpr()
2183 Record.push_back(E->getNumExpansions()); in VisitFunctionParmPackExpr()
2184 Record.AddDeclRef(E->getParameterPack()); in VisitFunctionParmPackExpr()
2185 Record.AddSourceLocation(E->getParameterPackLocation()); in VisitFunctionParmPackExpr()
2186 for (FunctionParmPackExpr::iterator I = E->begin(), End = E->end(); in VisitFunctionParmPackExpr()
2192 void ASTStmtWriter::VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *E) { in VisitMaterializeTemporaryExpr() argument
2193 VisitExpr(E); in VisitMaterializeTemporaryExpr()
2194 Record.push_back(static_cast<bool>(E->getLifetimeExtendedTemporaryDecl())); in VisitMaterializeTemporaryExpr()
2195 if (E->getLifetimeExtendedTemporaryDecl()) in VisitMaterializeTemporaryExpr()
2196 Record.AddDeclRef(E->getLifetimeExtendedTemporaryDecl()); in VisitMaterializeTemporaryExpr()
2198 Record.AddStmt(E->getSubExpr()); in VisitMaterializeTemporaryExpr()
2202 void ASTStmtWriter::VisitCXXFoldExpr(CXXFoldExpr *E) { in VisitCXXFoldExpr() argument
2203 VisitExpr(E); in VisitCXXFoldExpr()
2204 Record.AddSourceLocation(E->LParenLoc); in VisitCXXFoldExpr()
2205 Record.AddSourceLocation(E->EllipsisLoc); in VisitCXXFoldExpr()
2206 Record.AddSourceLocation(E->RParenLoc); in VisitCXXFoldExpr()
2207 Record.push_back(E->NumExpansions); in VisitCXXFoldExpr()
2208 Record.AddStmt(E->SubExprs[0]); in VisitCXXFoldExpr()
2209 Record.AddStmt(E->SubExprs[1]); in VisitCXXFoldExpr()
2210 Record.AddStmt(E->SubExprs[2]); in VisitCXXFoldExpr()
2211 Record.push_back(E->Opcode); in VisitCXXFoldExpr()
2215 void ASTStmtWriter::VisitCXXParenListInitExpr(CXXParenListInitExpr *E) { in VisitCXXParenListInitExpr() argument
2216 VisitExpr(E); in VisitCXXParenListInitExpr()
2217 ArrayRef<Expr *> InitExprs = E->getInitExprs(); in VisitCXXParenListInitExpr()
2219 Record.push_back(E->getUserSpecifiedInitExprs().size()); in VisitCXXParenListInitExpr()
2220 Record.AddSourceLocation(E->getInitLoc()); in VisitCXXParenListInitExpr()
2221 Record.AddSourceLocation(E->getBeginLoc()); in VisitCXXParenListInitExpr()
2222 Record.AddSourceLocation(E->getEndLoc()); in VisitCXXParenListInitExpr()
2223 for (Expr *InitExpr : E->getInitExprs()) in VisitCXXParenListInitExpr()
2225 Expr *ArrayFiller = E->getArrayFiller(); in VisitCXXParenListInitExpr()
2226 FieldDecl *UnionField = E->getInitializedFieldInUnion(); in VisitCXXParenListInitExpr()
2239 void ASTStmtWriter::VisitOpaqueValueExpr(OpaqueValueExpr *E) { in VisitOpaqueValueExpr() argument
2240 VisitExpr(E); in VisitOpaqueValueExpr()
2241 Record.AddStmt(E->getSourceExpr()); in VisitOpaqueValueExpr()
2242 Record.AddSourceLocation(E->getLocation()); in VisitOpaqueValueExpr()
2243 Record.push_back(E->isUnique()); in VisitOpaqueValueExpr()
2247 void ASTStmtWriter::VisitTypoExpr(TypoExpr *E) { in VisitTypoExpr() argument
2248 VisitExpr(E); in VisitTypoExpr()
2257 void ASTStmtWriter::VisitCUDAKernelCallExpr(CUDAKernelCallExpr *E) { in VisitCUDAKernelCallExpr() argument
2258 VisitCallExpr(E); in VisitCUDAKernelCallExpr()
2259 Record.AddStmt(E->getConfig()); in VisitCUDAKernelCallExpr()
2266 void ASTStmtWriter::VisitAsTypeExpr(AsTypeExpr *E) { in VisitAsTypeExpr() argument
2267 VisitExpr(E); in VisitAsTypeExpr()
2268 Record.AddSourceLocation(E->getBuiltinLoc()); in VisitAsTypeExpr()
2269 Record.AddSourceLocation(E->getRParenLoc()); in VisitAsTypeExpr()
2270 Record.AddStmt(E->getSrcExpr()); in VisitAsTypeExpr()
2277 void ASTStmtWriter::VisitMSPropertyRefExpr(MSPropertyRefExpr *E) { in VisitMSPropertyRefExpr() argument
2278 VisitExpr(E); in VisitMSPropertyRefExpr()
2279 Record.push_back(E->isArrow()); in VisitMSPropertyRefExpr()
2280 Record.AddStmt(E->getBaseExpr()); in VisitMSPropertyRefExpr()
2281 Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); in VisitMSPropertyRefExpr()
2282 Record.AddSourceLocation(E->getMemberLoc()); in VisitMSPropertyRefExpr()
2283 Record.AddDeclRef(E->getPropertyDecl()); in VisitMSPropertyRefExpr()
2287 void ASTStmtWriter::VisitMSPropertySubscriptExpr(MSPropertySubscriptExpr *E) { in VisitMSPropertySubscriptExpr() argument
2288 VisitExpr(E); in VisitMSPropertySubscriptExpr()
2289 Record.AddStmt(E->getBase()); in VisitMSPropertySubscriptExpr()
2290 Record.AddStmt(E->getIdx()); in VisitMSPropertySubscriptExpr()
2291 Record.AddSourceLocation(E->getRBracketLoc()); in VisitMSPropertySubscriptExpr()
2295 void ASTStmtWriter::VisitCXXUuidofExpr(CXXUuidofExpr *E) { in VisitCXXUuidofExpr() argument
2296 VisitExpr(E); in VisitCXXUuidofExpr()
2297 Record.AddSourceRange(E->getSourceRange()); in VisitCXXUuidofExpr()
2298 Record.AddDeclRef(E->getGuidDecl()); in VisitCXXUuidofExpr()
2299 if (E->isTypeOperand()) { in VisitCXXUuidofExpr()
2300 Record.AddTypeSourceInfo(E->getTypeOperandSourceInfo()); in VisitCXXUuidofExpr()
2303 Record.AddStmt(E->getExprOperand()); in VisitCXXUuidofExpr()
2349 void ASTStmtWriter::VisitOMPExecutableDirective(OMPExecutableDirective *E) { in VisitOMPExecutableDirective() argument
2350 Record.writeOMPChildren(E->Data); in VisitOMPExecutableDirective()
2351 Record.AddSourceLocation(E->getBeginLoc()); in VisitOMPExecutableDirective()
2352 Record.AddSourceLocation(E->getEndLoc()); in VisitOMPExecutableDirective()
2353 Record.writeEnum(E->getMappedDirective()); in VisitOMPExecutableDirective()