Lines Matching refs:E

321 void ASTStmtWriter::VisitExpr(Expr *E) {  in VisitExpr()  argument
322 VisitStmt(E); in VisitExpr()
323 Writer.AddTypeRef(E->getType(), Record); in VisitExpr()
324 Record.push_back(E->isTypeDependent()); in VisitExpr()
325 Record.push_back(E->isValueDependent()); in VisitExpr()
326 Record.push_back(E->isInstantiationDependent()); in VisitExpr()
327 Record.push_back(E->containsUnexpandedParameterPack()); in VisitExpr()
328 Record.push_back(E->getValueKind()); in VisitExpr()
329 Record.push_back(E->getObjectKind()); in VisitExpr()
332 void ASTStmtWriter::VisitPredefinedExpr(PredefinedExpr *E) { in VisitPredefinedExpr() argument
333 VisitExpr(E); in VisitPredefinedExpr()
334 Writer.AddSourceLocation(E->getLocation(), Record); in VisitPredefinedExpr()
335 Record.push_back(E->getIdentType()); // FIXME: stable encoding in VisitPredefinedExpr()
336 Writer.AddStmt(E->getFunctionName()); in VisitPredefinedExpr()
340 void ASTStmtWriter::VisitDeclRefExpr(DeclRefExpr *E) { in VisitDeclRefExpr() argument
341 VisitExpr(E); in VisitDeclRefExpr()
343 Record.push_back(E->hasQualifier()); in VisitDeclRefExpr()
344 Record.push_back(E->getDecl() != E->getFoundDecl()); in VisitDeclRefExpr()
345 Record.push_back(E->hasTemplateKWAndArgsInfo()); in VisitDeclRefExpr()
346 Record.push_back(E->hadMultipleCandidates()); in VisitDeclRefExpr()
347 Record.push_back(E->refersToEnclosingVariableOrCapture()); in VisitDeclRefExpr()
349 if (E->hasTemplateKWAndArgsInfo()) { in VisitDeclRefExpr()
350 unsigned NumTemplateArgs = E->getNumTemplateArgs(); in VisitDeclRefExpr()
354 DeclarationName::NameKind nk = (E->getDecl()->getDeclName().getNameKind()); in VisitDeclRefExpr()
356 if ((!E->hasTemplateKWAndArgsInfo()) && (!E->hasQualifier()) && in VisitDeclRefExpr()
357 (E->getDecl() == E->getFoundDecl()) && in VisitDeclRefExpr()
362 if (E->hasQualifier()) in VisitDeclRefExpr()
363 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitDeclRefExpr()
365 if (E->getDecl() != E->getFoundDecl()) in VisitDeclRefExpr()
366 Writer.AddDeclRef(E->getFoundDecl(), Record); in VisitDeclRefExpr()
368 if (E->hasTemplateKWAndArgsInfo()) in VisitDeclRefExpr()
369 AddTemplateKWAndArgsInfo(*E->getTemplateKWAndArgsInfo()); in VisitDeclRefExpr()
371 Writer.AddDeclRef(E->getDecl(), Record); in VisitDeclRefExpr()
372 Writer.AddSourceLocation(E->getLocation(), Record); in VisitDeclRefExpr()
373 Writer.AddDeclarationNameLoc(E->DNLoc, E->getDecl()->getDeclName(), Record); in VisitDeclRefExpr()
377 void ASTStmtWriter::VisitIntegerLiteral(IntegerLiteral *E) { in VisitIntegerLiteral() argument
378 VisitExpr(E); in VisitIntegerLiteral()
379 Writer.AddSourceLocation(E->getLocation(), Record); in VisitIntegerLiteral()
380 Writer.AddAPInt(E->getValue(), Record); in VisitIntegerLiteral()
382 if (E->getValue().getBitWidth() == 32) { in VisitIntegerLiteral()
389 void ASTStmtWriter::VisitFloatingLiteral(FloatingLiteral *E) { in VisitFloatingLiteral() argument
390 VisitExpr(E); in VisitFloatingLiteral()
391 Record.push_back(E->getRawSemantics()); in VisitFloatingLiteral()
392 Record.push_back(E->isExact()); in VisitFloatingLiteral()
393 Writer.AddAPFloat(E->getValue(), Record); in VisitFloatingLiteral()
394 Writer.AddSourceLocation(E->getLocation(), Record); in VisitFloatingLiteral()
398 void ASTStmtWriter::VisitImaginaryLiteral(ImaginaryLiteral *E) { in VisitImaginaryLiteral() argument
399 VisitExpr(E); in VisitImaginaryLiteral()
400 Writer.AddStmt(E->getSubExpr()); in VisitImaginaryLiteral()
404 void ASTStmtWriter::VisitStringLiteral(StringLiteral *E) { in VisitStringLiteral() argument
405 VisitExpr(E); in VisitStringLiteral()
406 Record.push_back(E->getByteLength()); in VisitStringLiteral()
407 Record.push_back(E->getNumConcatenated()); in VisitStringLiteral()
408 Record.push_back(E->getKind()); in VisitStringLiteral()
409 Record.push_back(E->isPascal()); in VisitStringLiteral()
414 Record.append(E->getBytes().begin(), E->getBytes().end()); in VisitStringLiteral()
415 for (unsigned I = 0, N = E->getNumConcatenated(); I != N; ++I) in VisitStringLiteral()
416 Writer.AddSourceLocation(E->getStrTokenLoc(I), Record); in VisitStringLiteral()
420 void ASTStmtWriter::VisitCharacterLiteral(CharacterLiteral *E) { in VisitCharacterLiteral() argument
421 VisitExpr(E); in VisitCharacterLiteral()
422 Record.push_back(E->getValue()); in VisitCharacterLiteral()
423 Writer.AddSourceLocation(E->getLocation(), Record); in VisitCharacterLiteral()
424 Record.push_back(E->getKind()); in VisitCharacterLiteral()
431 void ASTStmtWriter::VisitParenExpr(ParenExpr *E) { in VisitParenExpr() argument
432 VisitExpr(E); in VisitParenExpr()
433 Writer.AddSourceLocation(E->getLParen(), Record); in VisitParenExpr()
434 Writer.AddSourceLocation(E->getRParen(), Record); in VisitParenExpr()
435 Writer.AddStmt(E->getSubExpr()); in VisitParenExpr()
439 void ASTStmtWriter::VisitParenListExpr(ParenListExpr *E) { in VisitParenListExpr() argument
440 VisitExpr(E); in VisitParenListExpr()
441 Record.push_back(E->NumExprs); in VisitParenListExpr()
442 for (unsigned i=0; i != E->NumExprs; ++i) in VisitParenListExpr()
443 Writer.AddStmt(E->Exprs[i]); in VisitParenListExpr()
444 Writer.AddSourceLocation(E->LParenLoc, Record); in VisitParenListExpr()
445 Writer.AddSourceLocation(E->RParenLoc, Record); in VisitParenListExpr()
449 void ASTStmtWriter::VisitUnaryOperator(UnaryOperator *E) { in VisitUnaryOperator() argument
450 VisitExpr(E); in VisitUnaryOperator()
451 Writer.AddStmt(E->getSubExpr()); in VisitUnaryOperator()
452 Record.push_back(E->getOpcode()); // FIXME: stable encoding in VisitUnaryOperator()
453 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitUnaryOperator()
457 void ASTStmtWriter::VisitOffsetOfExpr(OffsetOfExpr *E) { in VisitOffsetOfExpr() argument
458 VisitExpr(E); in VisitOffsetOfExpr()
459 Record.push_back(E->getNumComponents()); in VisitOffsetOfExpr()
460 Record.push_back(E->getNumExpressions()); in VisitOffsetOfExpr()
461 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitOffsetOfExpr()
462 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitOffsetOfExpr()
463 Writer.AddTypeSourceInfo(E->getTypeSourceInfo(), Record); in VisitOffsetOfExpr()
464 for (unsigned I = 0, N = E->getNumComponents(); I != N; ++I) { in VisitOffsetOfExpr()
465 const OffsetOfExpr::OffsetOfNode &ON = E->getComponent(I); in VisitOffsetOfExpr()
487 for (unsigned I = 0, N = E->getNumExpressions(); I != N; ++I) in VisitOffsetOfExpr()
488 Writer.AddStmt(E->getIndexExpr(I)); in VisitOffsetOfExpr()
492 void ASTStmtWriter::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E) { in VisitUnaryExprOrTypeTraitExpr() argument
493 VisitExpr(E); in VisitUnaryExprOrTypeTraitExpr()
494 Record.push_back(E->getKind()); in VisitUnaryExprOrTypeTraitExpr()
495 if (E->isArgumentType()) in VisitUnaryExprOrTypeTraitExpr()
496 Writer.AddTypeSourceInfo(E->getArgumentTypeInfo(), Record); in VisitUnaryExprOrTypeTraitExpr()
499 Writer.AddStmt(E->getArgumentExpr()); in VisitUnaryExprOrTypeTraitExpr()
501 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitUnaryExprOrTypeTraitExpr()
502 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitUnaryExprOrTypeTraitExpr()
506 void ASTStmtWriter::VisitArraySubscriptExpr(ArraySubscriptExpr *E) { in VisitArraySubscriptExpr() argument
507 VisitExpr(E); in VisitArraySubscriptExpr()
508 Writer.AddStmt(E->getLHS()); in VisitArraySubscriptExpr()
509 Writer.AddStmt(E->getRHS()); in VisitArraySubscriptExpr()
510 Writer.AddSourceLocation(E->getRBracketLoc(), Record); in VisitArraySubscriptExpr()
514 void ASTStmtWriter::VisitCallExpr(CallExpr *E) { in VisitCallExpr() argument
515 VisitExpr(E); in VisitCallExpr()
516 Record.push_back(E->getNumArgs()); in VisitCallExpr()
517 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitCallExpr()
518 Writer.AddStmt(E->getCallee()); in VisitCallExpr()
519 for (CallExpr::arg_iterator Arg = E->arg_begin(), ArgEnd = E->arg_end(); in VisitCallExpr()
525 void ASTStmtWriter::VisitMemberExpr(MemberExpr *E) { in VisitMemberExpr() argument
528 Record.push_back(E->hasQualifier()); in VisitMemberExpr()
529 if (E->hasQualifier()) in VisitMemberExpr()
530 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitMemberExpr()
532 Record.push_back(E->HasTemplateKWAndArgsInfo); in VisitMemberExpr()
533 if (E->HasTemplateKWAndArgsInfo) { in VisitMemberExpr()
534 Writer.AddSourceLocation(E->getTemplateKeywordLoc(), Record); in VisitMemberExpr()
535 unsigned NumTemplateArgs = E->getNumTemplateArgs(); in VisitMemberExpr()
537 Writer.AddSourceLocation(E->getLAngleLoc(), Record); in VisitMemberExpr()
538 Writer.AddSourceLocation(E->getRAngleLoc(), Record); in VisitMemberExpr()
540 Writer.AddTemplateArgumentLoc(E->getTemplateArgs()[i], Record); in VisitMemberExpr()
543 Record.push_back(E->hadMultipleCandidates()); in VisitMemberExpr()
545 DeclAccessPair FoundDecl = E->getFoundDecl(); in VisitMemberExpr()
549 Writer.AddTypeRef(E->getType(), Record); in VisitMemberExpr()
550 Record.push_back(E->getValueKind()); in VisitMemberExpr()
551 Record.push_back(E->getObjectKind()); in VisitMemberExpr()
552 Writer.AddStmt(E->getBase()); in VisitMemberExpr()
553 Writer.AddDeclRef(E->getMemberDecl(), Record); in VisitMemberExpr()
554 Writer.AddSourceLocation(E->getMemberLoc(), Record); in VisitMemberExpr()
555 Record.push_back(E->isArrow()); in VisitMemberExpr()
556 Writer.AddDeclarationNameLoc(E->MemberDNLoc, in VisitMemberExpr()
557 E->getMemberDecl()->getDeclName(), Record); in VisitMemberExpr()
561 void ASTStmtWriter::VisitObjCIsaExpr(ObjCIsaExpr *E) { in VisitObjCIsaExpr() argument
562 VisitExpr(E); in VisitObjCIsaExpr()
563 Writer.AddStmt(E->getBase()); in VisitObjCIsaExpr()
564 Writer.AddSourceLocation(E->getIsaMemberLoc(), Record); in VisitObjCIsaExpr()
565 Writer.AddSourceLocation(E->getOpLoc(), Record); in VisitObjCIsaExpr()
566 Record.push_back(E->isArrow()); in VisitObjCIsaExpr()
571 VisitObjCIndirectCopyRestoreExpr(ObjCIndirectCopyRestoreExpr *E) { in VisitObjCIndirectCopyRestoreExpr() argument
572 VisitExpr(E); in VisitObjCIndirectCopyRestoreExpr()
573 Writer.AddStmt(E->getSubExpr()); in VisitObjCIndirectCopyRestoreExpr()
574 Record.push_back(E->shouldCopy()); in VisitObjCIndirectCopyRestoreExpr()
578 void ASTStmtWriter::VisitObjCBridgedCastExpr(ObjCBridgedCastExpr *E) { in VisitObjCBridgedCastExpr() argument
579 VisitExplicitCastExpr(E); in VisitObjCBridgedCastExpr()
580 Writer.AddSourceLocation(E->getLParenLoc(), Record); in VisitObjCBridgedCastExpr()
581 Writer.AddSourceLocation(E->getBridgeKeywordLoc(), Record); in VisitObjCBridgedCastExpr()
582 Record.push_back(E->getBridgeKind()); // FIXME: Stable encoding in VisitObjCBridgedCastExpr()
586 void ASTStmtWriter::VisitCastExpr(CastExpr *E) { in VisitCastExpr() argument
587 VisitExpr(E); in VisitCastExpr()
588 Record.push_back(E->path_size()); in VisitCastExpr()
589 Writer.AddStmt(E->getSubExpr()); in VisitCastExpr()
590 Record.push_back(E->getCastKind()); // FIXME: stable encoding in VisitCastExpr()
593 PI = E->path_begin(), PE = E->path_end(); PI != PE; ++PI) in VisitCastExpr()
597 void ASTStmtWriter::VisitBinaryOperator(BinaryOperator *E) { in VisitBinaryOperator() argument
598 VisitExpr(E); in VisitBinaryOperator()
599 Writer.AddStmt(E->getLHS()); in VisitBinaryOperator()
600 Writer.AddStmt(E->getRHS()); in VisitBinaryOperator()
601 Record.push_back(E->getOpcode()); // FIXME: stable encoding in VisitBinaryOperator()
602 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitBinaryOperator()
603 Record.push_back(E->isFPContractable()); in VisitBinaryOperator()
607 void ASTStmtWriter::VisitCompoundAssignOperator(CompoundAssignOperator *E) { in VisitCompoundAssignOperator() argument
608 VisitBinaryOperator(E); in VisitCompoundAssignOperator()
609 Writer.AddTypeRef(E->getComputationLHSType(), Record); in VisitCompoundAssignOperator()
610 Writer.AddTypeRef(E->getComputationResultType(), Record); in VisitCompoundAssignOperator()
614 void ASTStmtWriter::VisitConditionalOperator(ConditionalOperator *E) { in VisitConditionalOperator() argument
615 VisitExpr(E); in VisitConditionalOperator()
616 Writer.AddStmt(E->getCond()); in VisitConditionalOperator()
617 Writer.AddStmt(E->getLHS()); in VisitConditionalOperator()
618 Writer.AddStmt(E->getRHS()); in VisitConditionalOperator()
619 Writer.AddSourceLocation(E->getQuestionLoc(), Record); in VisitConditionalOperator()
620 Writer.AddSourceLocation(E->getColonLoc(), Record); in VisitConditionalOperator()
625 ASTStmtWriter::VisitBinaryConditionalOperator(BinaryConditionalOperator *E) { in VisitBinaryConditionalOperator() argument
626 VisitExpr(E); in VisitBinaryConditionalOperator()
627 Writer.AddStmt(E->getOpaqueValue()); in VisitBinaryConditionalOperator()
628 Writer.AddStmt(E->getCommon()); in VisitBinaryConditionalOperator()
629 Writer.AddStmt(E->getCond()); in VisitBinaryConditionalOperator()
630 Writer.AddStmt(E->getTrueExpr()); in VisitBinaryConditionalOperator()
631 Writer.AddStmt(E->getFalseExpr()); in VisitBinaryConditionalOperator()
632 Writer.AddSourceLocation(E->getQuestionLoc(), Record); in VisitBinaryConditionalOperator()
633 Writer.AddSourceLocation(E->getColonLoc(), Record); in VisitBinaryConditionalOperator()
637 void ASTStmtWriter::VisitImplicitCastExpr(ImplicitCastExpr *E) { in VisitImplicitCastExpr() argument
638 VisitCastExpr(E); in VisitImplicitCastExpr()
640 if (E->path_size() == 0) in VisitImplicitCastExpr()
646 void ASTStmtWriter::VisitExplicitCastExpr(ExplicitCastExpr *E) { in VisitExplicitCastExpr() argument
647 VisitCastExpr(E); in VisitExplicitCastExpr()
648 Writer.AddTypeSourceInfo(E->getTypeInfoAsWritten(), Record); in VisitExplicitCastExpr()
651 void ASTStmtWriter::VisitCStyleCastExpr(CStyleCastExpr *E) { in VisitCStyleCastExpr() argument
652 VisitExplicitCastExpr(E); in VisitCStyleCastExpr()
653 Writer.AddSourceLocation(E->getLParenLoc(), Record); in VisitCStyleCastExpr()
654 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitCStyleCastExpr()
658 void ASTStmtWriter::VisitCompoundLiteralExpr(CompoundLiteralExpr *E) { in VisitCompoundLiteralExpr() argument
659 VisitExpr(E); in VisitCompoundLiteralExpr()
660 Writer.AddSourceLocation(E->getLParenLoc(), Record); in VisitCompoundLiteralExpr()
661 Writer.AddTypeSourceInfo(E->getTypeSourceInfo(), Record); in VisitCompoundLiteralExpr()
662 Writer.AddStmt(E->getInitializer()); in VisitCompoundLiteralExpr()
663 Record.push_back(E->isFileScope()); in VisitCompoundLiteralExpr()
667 void ASTStmtWriter::VisitExtVectorElementExpr(ExtVectorElementExpr *E) { in VisitExtVectorElementExpr() argument
668 VisitExpr(E); in VisitExtVectorElementExpr()
669 Writer.AddStmt(E->getBase()); in VisitExtVectorElementExpr()
670 Writer.AddIdentifierRef(&E->getAccessor(), Record); in VisitExtVectorElementExpr()
671 Writer.AddSourceLocation(E->getAccessorLoc(), Record); in VisitExtVectorElementExpr()
675 void ASTStmtWriter::VisitInitListExpr(InitListExpr *E) { in VisitInitListExpr() argument
676 VisitExpr(E); in VisitInitListExpr()
679 Writer.AddStmt(E->getSyntacticForm()); in VisitInitListExpr()
680 Writer.AddSourceLocation(E->getLBraceLoc(), Record); in VisitInitListExpr()
681 Writer.AddSourceLocation(E->getRBraceLoc(), Record); in VisitInitListExpr()
682 bool isArrayFiller = E->ArrayFillerOrUnionFieldInit.is<Expr*>(); in VisitInitListExpr()
685 Writer.AddStmt(E->getArrayFiller()); in VisitInitListExpr()
687 Writer.AddDeclRef(E->getInitializedFieldInUnion(), Record); in VisitInitListExpr()
688 Record.push_back(E->hadArrayRangeDesignator()); in VisitInitListExpr()
689 Record.push_back(E->getNumInits()); in VisitInitListExpr()
693 Expr *filler = E->getArrayFiller(); in VisitInitListExpr()
694 for (unsigned I = 0, N = E->getNumInits(); I != N; ++I) in VisitInitListExpr()
695 Writer.AddStmt(E->getInit(I) != filler ? E->getInit(I) : nullptr); in VisitInitListExpr()
697 for (unsigned I = 0, N = E->getNumInits(); I != N; ++I) in VisitInitListExpr()
698 Writer.AddStmt(E->getInit(I)); in VisitInitListExpr()
703 void ASTStmtWriter::VisitDesignatedInitExpr(DesignatedInitExpr *E) { in VisitDesignatedInitExpr() argument
704 VisitExpr(E); in VisitDesignatedInitExpr()
705 Record.push_back(E->getNumSubExprs()); in VisitDesignatedInitExpr()
706 for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) in VisitDesignatedInitExpr()
707 Writer.AddStmt(E->getSubExpr(I)); in VisitDesignatedInitExpr()
708 Writer.AddSourceLocation(E->getEqualOrColonLoc(), Record); in VisitDesignatedInitExpr()
709 Record.push_back(E->usesGNUSyntax()); in VisitDesignatedInitExpr()
710 for (DesignatedInitExpr::designators_iterator D = E->designators_begin(), in VisitDesignatedInitExpr()
711 DEnd = E->designators_end(); in VisitDesignatedInitExpr()
740 void ASTStmtWriter::VisitImplicitValueInitExpr(ImplicitValueInitExpr *E) { in VisitImplicitValueInitExpr() argument
741 VisitExpr(E); in VisitImplicitValueInitExpr()
745 void ASTStmtWriter::VisitVAArgExpr(VAArgExpr *E) { in VisitVAArgExpr() argument
746 VisitExpr(E); in VisitVAArgExpr()
747 Writer.AddStmt(E->getSubExpr()); in VisitVAArgExpr()
748 Writer.AddTypeSourceInfo(E->getWrittenTypeInfo(), Record); in VisitVAArgExpr()
749 Writer.AddSourceLocation(E->getBuiltinLoc(), Record); in VisitVAArgExpr()
750 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitVAArgExpr()
754 void ASTStmtWriter::VisitAddrLabelExpr(AddrLabelExpr *E) { in VisitAddrLabelExpr() argument
755 VisitExpr(E); in VisitAddrLabelExpr()
756 Writer.AddSourceLocation(E->getAmpAmpLoc(), Record); in VisitAddrLabelExpr()
757 Writer.AddSourceLocation(E->getLabelLoc(), Record); in VisitAddrLabelExpr()
758 Writer.AddDeclRef(E->getLabel(), Record); in VisitAddrLabelExpr()
762 void ASTStmtWriter::VisitStmtExpr(StmtExpr *E) { in VisitStmtExpr() argument
763 VisitExpr(E); in VisitStmtExpr()
764 Writer.AddStmt(E->getSubStmt()); in VisitStmtExpr()
765 Writer.AddSourceLocation(E->getLParenLoc(), Record); in VisitStmtExpr()
766 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitStmtExpr()
770 void ASTStmtWriter::VisitChooseExpr(ChooseExpr *E) { in VisitChooseExpr() argument
771 VisitExpr(E); in VisitChooseExpr()
772 Writer.AddStmt(E->getCond()); in VisitChooseExpr()
773 Writer.AddStmt(E->getLHS()); in VisitChooseExpr()
774 Writer.AddStmt(E->getRHS()); in VisitChooseExpr()
775 Writer.AddSourceLocation(E->getBuiltinLoc(), Record); in VisitChooseExpr()
776 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitChooseExpr()
777 Record.push_back(E->isConditionDependent() ? false : E->isConditionTrue()); in VisitChooseExpr()
781 void ASTStmtWriter::VisitGNUNullExpr(GNUNullExpr *E) { in VisitGNUNullExpr() argument
782 VisitExpr(E); in VisitGNUNullExpr()
783 Writer.AddSourceLocation(E->getTokenLocation(), Record); in VisitGNUNullExpr()
787 void ASTStmtWriter::VisitShuffleVectorExpr(ShuffleVectorExpr *E) { in VisitShuffleVectorExpr() argument
788 VisitExpr(E); in VisitShuffleVectorExpr()
789 Record.push_back(E->getNumSubExprs()); in VisitShuffleVectorExpr()
790 for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) in VisitShuffleVectorExpr()
791 Writer.AddStmt(E->getExpr(I)); in VisitShuffleVectorExpr()
792 Writer.AddSourceLocation(E->getBuiltinLoc(), Record); in VisitShuffleVectorExpr()
793 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitShuffleVectorExpr()
797 void ASTStmtWriter::VisitConvertVectorExpr(ConvertVectorExpr *E) { in VisitConvertVectorExpr() argument
798 VisitExpr(E); in VisitConvertVectorExpr()
799 Writer.AddSourceLocation(E->getBuiltinLoc(), Record); in VisitConvertVectorExpr()
800 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitConvertVectorExpr()
801 Writer.AddTypeSourceInfo(E->getTypeSourceInfo(), Record); in VisitConvertVectorExpr()
802 Writer.AddStmt(E->getSrcExpr()); in VisitConvertVectorExpr()
806 void ASTStmtWriter::VisitBlockExpr(BlockExpr *E) { in VisitBlockExpr() argument
807 VisitExpr(E); in VisitBlockExpr()
808 Writer.AddDeclRef(E->getBlockDecl(), Record); in VisitBlockExpr()
812 void ASTStmtWriter::VisitGenericSelectionExpr(GenericSelectionExpr *E) { in VisitGenericSelectionExpr() argument
813 VisitExpr(E); in VisitGenericSelectionExpr()
814 Record.push_back(E->getNumAssocs()); in VisitGenericSelectionExpr()
816 Writer.AddStmt(E->getControllingExpr()); in VisitGenericSelectionExpr()
817 for (unsigned I = 0, N = E->getNumAssocs(); I != N; ++I) { in VisitGenericSelectionExpr()
818 Writer.AddTypeSourceInfo(E->getAssocTypeSourceInfo(I), Record); in VisitGenericSelectionExpr()
819 Writer.AddStmt(E->getAssocExpr(I)); in VisitGenericSelectionExpr()
821 Record.push_back(E->isResultDependent() ? -1U : E->getResultIndex()); in VisitGenericSelectionExpr()
823 Writer.AddSourceLocation(E->getGenericLoc(), Record); in VisitGenericSelectionExpr()
824 Writer.AddSourceLocation(E->getDefaultLoc(), Record); in VisitGenericSelectionExpr()
825 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitGenericSelectionExpr()
829 void ASTStmtWriter::VisitPseudoObjectExpr(PseudoObjectExpr *E) { in VisitPseudoObjectExpr() argument
830 VisitExpr(E); in VisitPseudoObjectExpr()
831 Record.push_back(E->getNumSemanticExprs()); in VisitPseudoObjectExpr()
835 unsigned result = E->getResultExprIndex(); in VisitPseudoObjectExpr()
839 Writer.AddStmt(E->getSyntacticForm()); in VisitPseudoObjectExpr()
841 i = E->semantics_begin(), e = E->semantics_end(); i != e; ++i) { in VisitPseudoObjectExpr()
847 void ASTStmtWriter::VisitAtomicExpr(AtomicExpr *E) { in VisitAtomicExpr() argument
848 VisitExpr(E); in VisitAtomicExpr()
849 Record.push_back(E->getOp()); in VisitAtomicExpr()
850 for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) in VisitAtomicExpr()
851 Writer.AddStmt(E->getSubExprs()[I]); in VisitAtomicExpr()
852 Writer.AddSourceLocation(E->getBuiltinLoc(), Record); in VisitAtomicExpr()
853 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitAtomicExpr()
861 void ASTStmtWriter::VisitObjCStringLiteral(ObjCStringLiteral *E) { in VisitObjCStringLiteral() argument
862 VisitExpr(E); in VisitObjCStringLiteral()
863 Writer.AddStmt(E->getString()); in VisitObjCStringLiteral()
864 Writer.AddSourceLocation(E->getAtLoc(), Record); in VisitObjCStringLiteral()
868 void ASTStmtWriter::VisitObjCBoxedExpr(ObjCBoxedExpr *E) { in VisitObjCBoxedExpr() argument
869 VisitExpr(E); in VisitObjCBoxedExpr()
870 Writer.AddStmt(E->getSubExpr()); in VisitObjCBoxedExpr()
871 Writer.AddDeclRef(E->getBoxingMethod(), Record); in VisitObjCBoxedExpr()
872 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitObjCBoxedExpr()
876 void ASTStmtWriter::VisitObjCArrayLiteral(ObjCArrayLiteral *E) { in VisitObjCArrayLiteral() argument
877 VisitExpr(E); in VisitObjCArrayLiteral()
878 Record.push_back(E->getNumElements()); in VisitObjCArrayLiteral()
879 for (unsigned i = 0; i < E->getNumElements(); i++) in VisitObjCArrayLiteral()
880 Writer.AddStmt(E->getElement(i)); in VisitObjCArrayLiteral()
881 Writer.AddDeclRef(E->getArrayWithObjectsMethod(), Record); in VisitObjCArrayLiteral()
882 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitObjCArrayLiteral()
886 void ASTStmtWriter::VisitObjCDictionaryLiteral(ObjCDictionaryLiteral *E) { in VisitObjCDictionaryLiteral() argument
887 VisitExpr(E); in VisitObjCDictionaryLiteral()
888 Record.push_back(E->getNumElements()); in VisitObjCDictionaryLiteral()
889 Record.push_back(E->HasPackExpansions); in VisitObjCDictionaryLiteral()
890 for (unsigned i = 0; i < E->getNumElements(); i++) { in VisitObjCDictionaryLiteral()
891 ObjCDictionaryElement Element = E->getKeyValueElement(i); in VisitObjCDictionaryLiteral()
894 if (E->HasPackExpansions) { in VisitObjCDictionaryLiteral()
903 Writer.AddDeclRef(E->getDictWithObjectsMethod(), Record); in VisitObjCDictionaryLiteral()
904 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitObjCDictionaryLiteral()
908 void ASTStmtWriter::VisitObjCEncodeExpr(ObjCEncodeExpr *E) { in VisitObjCEncodeExpr() argument
909 VisitExpr(E); in VisitObjCEncodeExpr()
910 Writer.AddTypeSourceInfo(E->getEncodedTypeSourceInfo(), Record); in VisitObjCEncodeExpr()
911 Writer.AddSourceLocation(E->getAtLoc(), Record); in VisitObjCEncodeExpr()
912 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitObjCEncodeExpr()
916 void ASTStmtWriter::VisitObjCSelectorExpr(ObjCSelectorExpr *E) { in VisitObjCSelectorExpr() argument
917 VisitExpr(E); in VisitObjCSelectorExpr()
918 Writer.AddSelectorRef(E->getSelector(), Record); in VisitObjCSelectorExpr()
919 Writer.AddSourceLocation(E->getAtLoc(), Record); in VisitObjCSelectorExpr()
920 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitObjCSelectorExpr()
924 void ASTStmtWriter::VisitObjCProtocolExpr(ObjCProtocolExpr *E) { in VisitObjCProtocolExpr() argument
925 VisitExpr(E); in VisitObjCProtocolExpr()
926 Writer.AddDeclRef(E->getProtocol(), Record); in VisitObjCProtocolExpr()
927 Writer.AddSourceLocation(E->getAtLoc(), Record); in VisitObjCProtocolExpr()
928 Writer.AddSourceLocation(E->ProtoLoc, Record); in VisitObjCProtocolExpr()
929 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitObjCProtocolExpr()
933 void ASTStmtWriter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *E) { in VisitObjCIvarRefExpr() argument
934 VisitExpr(E); in VisitObjCIvarRefExpr()
935 Writer.AddDeclRef(E->getDecl(), Record); in VisitObjCIvarRefExpr()
936 Writer.AddSourceLocation(E->getLocation(), Record); in VisitObjCIvarRefExpr()
937 Writer.AddSourceLocation(E->getOpLoc(), Record); in VisitObjCIvarRefExpr()
938 Writer.AddStmt(E->getBase()); in VisitObjCIvarRefExpr()
939 Record.push_back(E->isArrow()); in VisitObjCIvarRefExpr()
940 Record.push_back(E->isFreeIvar()); in VisitObjCIvarRefExpr()
944 void ASTStmtWriter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) { in VisitObjCPropertyRefExpr() argument
945 VisitExpr(E); in VisitObjCPropertyRefExpr()
946 Record.push_back(E->SetterAndMethodRefFlags.getInt()); in VisitObjCPropertyRefExpr()
947 Record.push_back(E->isImplicitProperty()); in VisitObjCPropertyRefExpr()
948 if (E->isImplicitProperty()) { in VisitObjCPropertyRefExpr()
949 Writer.AddDeclRef(E->getImplicitPropertyGetter(), Record); in VisitObjCPropertyRefExpr()
950 Writer.AddDeclRef(E->getImplicitPropertySetter(), Record); in VisitObjCPropertyRefExpr()
952 Writer.AddDeclRef(E->getExplicitProperty(), Record); in VisitObjCPropertyRefExpr()
954 Writer.AddSourceLocation(E->getLocation(), Record); in VisitObjCPropertyRefExpr()
955 Writer.AddSourceLocation(E->getReceiverLocation(), Record); in VisitObjCPropertyRefExpr()
956 if (E->isObjectReceiver()) { in VisitObjCPropertyRefExpr()
958 Writer.AddStmt(E->getBase()); in VisitObjCPropertyRefExpr()
959 } else if (E->isSuperReceiver()) { in VisitObjCPropertyRefExpr()
961 Writer.AddTypeRef(E->getSuperReceiverType(), Record); in VisitObjCPropertyRefExpr()
964 Writer.AddDeclRef(E->getClassReceiver(), Record); in VisitObjCPropertyRefExpr()
970 void ASTStmtWriter::VisitObjCSubscriptRefExpr(ObjCSubscriptRefExpr *E) { in VisitObjCSubscriptRefExpr() argument
971 VisitExpr(E); in VisitObjCSubscriptRefExpr()
972 Writer.AddSourceLocation(E->getRBracket(), Record); in VisitObjCSubscriptRefExpr()
973 Writer.AddStmt(E->getBaseExpr()); in VisitObjCSubscriptRefExpr()
974 Writer.AddStmt(E->getKeyExpr()); in VisitObjCSubscriptRefExpr()
975 Writer.AddDeclRef(E->getAtIndexMethodDecl(), Record); in VisitObjCSubscriptRefExpr()
976 Writer.AddDeclRef(E->setAtIndexMethodDecl(), Record); in VisitObjCSubscriptRefExpr()
981 void ASTStmtWriter::VisitObjCMessageExpr(ObjCMessageExpr *E) { in VisitObjCMessageExpr() argument
982 VisitExpr(E); in VisitObjCMessageExpr()
983 Record.push_back(E->getNumArgs()); in VisitObjCMessageExpr()
984 Record.push_back(E->getNumStoredSelLocs()); in VisitObjCMessageExpr()
985 Record.push_back(E->SelLocsKind); in VisitObjCMessageExpr()
986 Record.push_back(E->isDelegateInitCall()); in VisitObjCMessageExpr()
987 Record.push_back(E->IsImplicit); in VisitObjCMessageExpr()
988 Record.push_back((unsigned)E->getReceiverKind()); // FIXME: stable encoding in VisitObjCMessageExpr()
989 switch (E->getReceiverKind()) { in VisitObjCMessageExpr()
991 Writer.AddStmt(E->getInstanceReceiver()); in VisitObjCMessageExpr()
995 Writer.AddTypeSourceInfo(E->getClassReceiverTypeInfo(), Record); in VisitObjCMessageExpr()
1000 Writer.AddTypeRef(E->getSuperType(), Record); in VisitObjCMessageExpr()
1001 Writer.AddSourceLocation(E->getSuperLoc(), Record); in VisitObjCMessageExpr()
1005 if (E->getMethodDecl()) { in VisitObjCMessageExpr()
1007 Writer.AddDeclRef(E->getMethodDecl(), Record); in VisitObjCMessageExpr()
1010 Writer.AddSelectorRef(E->getSelector(), Record); in VisitObjCMessageExpr()
1013 Writer.AddSourceLocation(E->getLeftLoc(), Record); in VisitObjCMessageExpr()
1014 Writer.AddSourceLocation(E->getRightLoc(), Record); in VisitObjCMessageExpr()
1016 for (CallExpr::arg_iterator Arg = E->arg_begin(), ArgEnd = E->arg_end(); in VisitObjCMessageExpr()
1020 SourceLocation *Locs = E->getStoredSelLocs(); in VisitObjCMessageExpr()
1021 for (unsigned i = 0, e = E->getNumStoredSelLocs(); i != e; ++i) in VisitObjCMessageExpr()
1082 void ASTStmtWriter::VisitObjCBoolLiteralExpr(ObjCBoolLiteralExpr *E) { in VisitObjCBoolLiteralExpr() argument
1083 VisitExpr(E); in VisitObjCBoolLiteralExpr()
1084 Record.push_back(E->getValue()); in VisitObjCBoolLiteralExpr()
1085 Writer.AddSourceLocation(E->getLocation(), Record); in VisitObjCBoolLiteralExpr()
1135 void ASTStmtWriter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E) { in VisitCXXOperatorCallExpr() argument
1136 VisitCallExpr(E); in VisitCXXOperatorCallExpr()
1137 Record.push_back(E->getOperator()); in VisitCXXOperatorCallExpr()
1138 Writer.AddSourceRange(E->Range, Record); in VisitCXXOperatorCallExpr()
1139 Record.push_back(E->isFPContractable()); in VisitCXXOperatorCallExpr()
1143 void ASTStmtWriter::VisitCXXMemberCallExpr(CXXMemberCallExpr *E) { in VisitCXXMemberCallExpr() argument
1144 VisitCallExpr(E); in VisitCXXMemberCallExpr()
1148 void ASTStmtWriter::VisitCXXConstructExpr(CXXConstructExpr *E) { in VisitCXXConstructExpr() argument
1149 VisitExpr(E); in VisitCXXConstructExpr()
1150 Record.push_back(E->getNumArgs()); in VisitCXXConstructExpr()
1151 for (unsigned I = 0, N = E->getNumArgs(); I != N; ++I) in VisitCXXConstructExpr()
1152 Writer.AddStmt(E->getArg(I)); in VisitCXXConstructExpr()
1153 Writer.AddDeclRef(E->getConstructor(), Record); in VisitCXXConstructExpr()
1154 Writer.AddSourceLocation(E->getLocation(), Record); in VisitCXXConstructExpr()
1155 Record.push_back(E->isElidable()); in VisitCXXConstructExpr()
1156 Record.push_back(E->hadMultipleCandidates()); in VisitCXXConstructExpr()
1157 Record.push_back(E->isListInitialization()); in VisitCXXConstructExpr()
1158 Record.push_back(E->isStdInitListInitialization()); in VisitCXXConstructExpr()
1159 Record.push_back(E->requiresZeroInitialization()); in VisitCXXConstructExpr()
1160 Record.push_back(E->getConstructionKind()); // FIXME: stable encoding in VisitCXXConstructExpr()
1161 Writer.AddSourceRange(E->getParenOrBraceRange(), Record); in VisitCXXConstructExpr()
1165 void ASTStmtWriter::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E) { in VisitCXXTemporaryObjectExpr() argument
1166 VisitCXXConstructExpr(E); in VisitCXXTemporaryObjectExpr()
1167 Writer.AddTypeSourceInfo(E->getTypeSourceInfo(), Record); in VisitCXXTemporaryObjectExpr()
1171 void ASTStmtWriter::VisitLambdaExpr(LambdaExpr *E) { in VisitLambdaExpr() argument
1172 VisitExpr(E); in VisitLambdaExpr()
1173 Record.push_back(E->NumCaptures); in VisitLambdaExpr()
1175 if (E->HasArrayIndexVars) in VisitLambdaExpr()
1176 NumArrayIndexVars = E->getArrayIndexStarts()[E->NumCaptures]; in VisitLambdaExpr()
1178 Writer.AddSourceRange(E->IntroducerRange, Record); in VisitLambdaExpr()
1179 Record.push_back(E->CaptureDefault); // FIXME: stable encoding in VisitLambdaExpr()
1180 Writer.AddSourceLocation(E->CaptureDefaultLoc, Record); in VisitLambdaExpr()
1181 Record.push_back(E->ExplicitParams); in VisitLambdaExpr()
1182 Record.push_back(E->ExplicitResultType); in VisitLambdaExpr()
1183 Writer.AddSourceLocation(E->ClosingBrace, Record); in VisitLambdaExpr()
1186 for (LambdaExpr::capture_init_iterator C = E->capture_init_begin(), in VisitLambdaExpr()
1187 CEnd = E->capture_init_end(); in VisitLambdaExpr()
1194 Record.append(E->getArrayIndexStarts(), in VisitLambdaExpr()
1195 E->getArrayIndexStarts() + E->NumCaptures + 1); in VisitLambdaExpr()
1196 VarDecl **ArrayIndexVars = E->getArrayIndexVars(); in VisitLambdaExpr()
1204 void ASTStmtWriter::VisitCXXStdInitializerListExpr(CXXStdInitializerListExpr *E) { in VisitCXXStdInitializerListExpr() argument
1205 VisitExpr(E); in VisitCXXStdInitializerListExpr()
1206 Writer.AddStmt(E->getSubExpr()); in VisitCXXStdInitializerListExpr()
1210 void ASTStmtWriter::VisitCXXNamedCastExpr(CXXNamedCastExpr *E) { in VisitCXXNamedCastExpr() argument
1211 VisitExplicitCastExpr(E); in VisitCXXNamedCastExpr()
1212 Writer.AddSourceRange(SourceRange(E->getOperatorLoc(), E->getRParenLoc()), in VisitCXXNamedCastExpr()
1214 Writer.AddSourceRange(E->getAngleBrackets(), Record); in VisitCXXNamedCastExpr()
1217 void ASTStmtWriter::VisitCXXStaticCastExpr(CXXStaticCastExpr *E) { in VisitCXXStaticCastExpr() argument
1218 VisitCXXNamedCastExpr(E); in VisitCXXStaticCastExpr()
1222 void ASTStmtWriter::VisitCXXDynamicCastExpr(CXXDynamicCastExpr *E) { in VisitCXXDynamicCastExpr() argument
1223 VisitCXXNamedCastExpr(E); in VisitCXXDynamicCastExpr()
1227 void ASTStmtWriter::VisitCXXReinterpretCastExpr(CXXReinterpretCastExpr *E) { in VisitCXXReinterpretCastExpr() argument
1228 VisitCXXNamedCastExpr(E); in VisitCXXReinterpretCastExpr()
1232 void ASTStmtWriter::VisitCXXConstCastExpr(CXXConstCastExpr *E) { in VisitCXXConstCastExpr() argument
1233 VisitCXXNamedCastExpr(E); in VisitCXXConstCastExpr()
1237 void ASTStmtWriter::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E) { in VisitCXXFunctionalCastExpr() argument
1238 VisitExplicitCastExpr(E); in VisitCXXFunctionalCastExpr()
1239 Writer.AddSourceLocation(E->getLParenLoc(), Record); in VisitCXXFunctionalCastExpr()
1240 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitCXXFunctionalCastExpr()
1244 void ASTStmtWriter::VisitUserDefinedLiteral(UserDefinedLiteral *E) { in VisitUserDefinedLiteral() argument
1245 VisitCallExpr(E); in VisitUserDefinedLiteral()
1246 Writer.AddSourceLocation(E->UDSuffixLoc, Record); in VisitUserDefinedLiteral()
1250 void ASTStmtWriter::VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *E) { in VisitCXXBoolLiteralExpr() argument
1251 VisitExpr(E); in VisitCXXBoolLiteralExpr()
1252 Record.push_back(E->getValue()); in VisitCXXBoolLiteralExpr()
1253 Writer.AddSourceLocation(E->getLocation(), Record); in VisitCXXBoolLiteralExpr()
1257 void ASTStmtWriter::VisitCXXNullPtrLiteralExpr(CXXNullPtrLiteralExpr *E) { in VisitCXXNullPtrLiteralExpr() argument
1258 VisitExpr(E); in VisitCXXNullPtrLiteralExpr()
1259 Writer.AddSourceLocation(E->getLocation(), Record); in VisitCXXNullPtrLiteralExpr()
1263 void ASTStmtWriter::VisitCXXTypeidExpr(CXXTypeidExpr *E) { in VisitCXXTypeidExpr() argument
1264 VisitExpr(E); in VisitCXXTypeidExpr()
1265 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitCXXTypeidExpr()
1266 if (E->isTypeOperand()) { in VisitCXXTypeidExpr()
1267 Writer.AddTypeSourceInfo(E->getTypeOperandSourceInfo(), Record); in VisitCXXTypeidExpr()
1270 Writer.AddStmt(E->getExprOperand()); in VisitCXXTypeidExpr()
1275 void ASTStmtWriter::VisitCXXThisExpr(CXXThisExpr *E) { in VisitCXXThisExpr() argument
1276 VisitExpr(E); in VisitCXXThisExpr()
1277 Writer.AddSourceLocation(E->getLocation(), Record); in VisitCXXThisExpr()
1278 Record.push_back(E->isImplicit()); in VisitCXXThisExpr()
1282 void ASTStmtWriter::VisitCXXThrowExpr(CXXThrowExpr *E) { in VisitCXXThrowExpr() argument
1283 VisitExpr(E); in VisitCXXThrowExpr()
1284 Writer.AddSourceLocation(E->getThrowLoc(), Record); in VisitCXXThrowExpr()
1285 Writer.AddStmt(E->getSubExpr()); in VisitCXXThrowExpr()
1286 Record.push_back(E->isThrownVariableInScope()); in VisitCXXThrowExpr()
1290 void ASTStmtWriter::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { in VisitCXXDefaultArgExpr() argument
1291 VisitExpr(E); in VisitCXXDefaultArgExpr()
1293 bool HasOtherExprStored = E->Param.getInt(); in VisitCXXDefaultArgExpr()
1297 Writer.AddStmt(E->getExpr()); in VisitCXXDefaultArgExpr()
1298 Writer.AddDeclRef(E->getParam(), Record); in VisitCXXDefaultArgExpr()
1299 Writer.AddSourceLocation(E->getUsedLocation(), Record); in VisitCXXDefaultArgExpr()
1304 void ASTStmtWriter::VisitCXXDefaultInitExpr(CXXDefaultInitExpr *E) { in VisitCXXDefaultInitExpr() argument
1305 VisitExpr(E); in VisitCXXDefaultInitExpr()
1306 Writer.AddDeclRef(E->getField(), Record); in VisitCXXDefaultInitExpr()
1307 Writer.AddSourceLocation(E->getExprLoc(), Record); in VisitCXXDefaultInitExpr()
1311 void ASTStmtWriter::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) { in VisitCXXBindTemporaryExpr() argument
1312 VisitExpr(E); in VisitCXXBindTemporaryExpr()
1313 Writer.AddCXXTemporary(E->getTemporary(), Record); in VisitCXXBindTemporaryExpr()
1314 Writer.AddStmt(E->getSubExpr()); in VisitCXXBindTemporaryExpr()
1318 void ASTStmtWriter::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *E) { in VisitCXXScalarValueInitExpr() argument
1319 VisitExpr(E); in VisitCXXScalarValueInitExpr()
1320 Writer.AddTypeSourceInfo(E->getTypeSourceInfo(), Record); in VisitCXXScalarValueInitExpr()
1321 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitCXXScalarValueInitExpr()
1325 void ASTStmtWriter::VisitCXXNewExpr(CXXNewExpr *E) { in VisitCXXNewExpr() argument
1326 VisitExpr(E); in VisitCXXNewExpr()
1327 Record.push_back(E->isGlobalNew()); in VisitCXXNewExpr()
1328 Record.push_back(E->isArray()); in VisitCXXNewExpr()
1329 Record.push_back(E->doesUsualArrayDeleteWantSize()); in VisitCXXNewExpr()
1330 Record.push_back(E->getNumPlacementArgs()); in VisitCXXNewExpr()
1331 Record.push_back(E->StoredInitializationStyle); in VisitCXXNewExpr()
1332 Writer.AddDeclRef(E->getOperatorNew(), Record); in VisitCXXNewExpr()
1333 Writer.AddDeclRef(E->getOperatorDelete(), Record); in VisitCXXNewExpr()
1334 Writer.AddTypeSourceInfo(E->getAllocatedTypeSourceInfo(), Record); in VisitCXXNewExpr()
1335 Writer.AddSourceRange(E->getTypeIdParens(), Record); in VisitCXXNewExpr()
1336 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitCXXNewExpr()
1337 Writer.AddSourceRange(E->getDirectInitRange(), Record); in VisitCXXNewExpr()
1338 for (CXXNewExpr::arg_iterator I = E->raw_arg_begin(), e = E->raw_arg_end(); in VisitCXXNewExpr()
1345 void ASTStmtWriter::VisitCXXDeleteExpr(CXXDeleteExpr *E) { in VisitCXXDeleteExpr() argument
1346 VisitExpr(E); in VisitCXXDeleteExpr()
1347 Record.push_back(E->isGlobalDelete()); in VisitCXXDeleteExpr()
1348 Record.push_back(E->isArrayForm()); in VisitCXXDeleteExpr()
1349 Record.push_back(E->isArrayFormAsWritten()); in VisitCXXDeleteExpr()
1350 Record.push_back(E->doesUsualArrayDeleteWantSize()); in VisitCXXDeleteExpr()
1351 Writer.AddDeclRef(E->getOperatorDelete(), Record); in VisitCXXDeleteExpr()
1352 Writer.AddStmt(E->getArgument()); in VisitCXXDeleteExpr()
1353 Writer.AddSourceLocation(E->getSourceRange().getBegin(), Record); in VisitCXXDeleteExpr()
1358 void ASTStmtWriter::VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E) { in VisitCXXPseudoDestructorExpr() argument
1359 VisitExpr(E); in VisitCXXPseudoDestructorExpr()
1361 Writer.AddStmt(E->getBase()); in VisitCXXPseudoDestructorExpr()
1362 Record.push_back(E->isArrow()); in VisitCXXPseudoDestructorExpr()
1363 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitCXXPseudoDestructorExpr()
1364 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitCXXPseudoDestructorExpr()
1365 Writer.AddTypeSourceInfo(E->getScopeTypeInfo(), Record); in VisitCXXPseudoDestructorExpr()
1366 Writer.AddSourceLocation(E->getColonColonLoc(), Record); in VisitCXXPseudoDestructorExpr()
1367 Writer.AddSourceLocation(E->getTildeLoc(), Record); in VisitCXXPseudoDestructorExpr()
1370 Writer.AddIdentifierRef(E->getDestroyedTypeIdentifier(), Record); in VisitCXXPseudoDestructorExpr()
1371 if (E->getDestroyedTypeIdentifier()) in VisitCXXPseudoDestructorExpr()
1372 Writer.AddSourceLocation(E->getDestroyedTypeLoc(), Record); in VisitCXXPseudoDestructorExpr()
1374 Writer.AddTypeSourceInfo(E->getDestroyedTypeInfo(), Record); in VisitCXXPseudoDestructorExpr()
1379 void ASTStmtWriter::VisitExprWithCleanups(ExprWithCleanups *E) { in VisitExprWithCleanups() argument
1380 VisitExpr(E); in VisitExprWithCleanups()
1381 Record.push_back(E->getNumObjects()); in VisitExprWithCleanups()
1382 for (unsigned i = 0, e = E->getNumObjects(); i != e; ++i) in VisitExprWithCleanups()
1383 Writer.AddDeclRef(E->getObject(i), Record); in VisitExprWithCleanups()
1385 Writer.AddStmt(E->getSubExpr()); in VisitExprWithCleanups()
1390 ASTStmtWriter::VisitCXXDependentScopeMemberExpr(CXXDependentScopeMemberExpr *E){ in VisitCXXDependentScopeMemberExpr() argument
1391 VisitExpr(E); in VisitCXXDependentScopeMemberExpr()
1396 Record.push_back(E->HasTemplateKWAndArgsInfo); in VisitCXXDependentScopeMemberExpr()
1397 if (E->HasTemplateKWAndArgsInfo) { in VisitCXXDependentScopeMemberExpr()
1398 const ASTTemplateKWAndArgsInfo &Args = *E->getTemplateKWAndArgsInfo(); in VisitCXXDependentScopeMemberExpr()
1403 if (!E->isImplicitAccess()) in VisitCXXDependentScopeMemberExpr()
1404 Writer.AddStmt(E->getBase()); in VisitCXXDependentScopeMemberExpr()
1407 Writer.AddTypeRef(E->getBaseType(), Record); in VisitCXXDependentScopeMemberExpr()
1408 Record.push_back(E->isArrow()); in VisitCXXDependentScopeMemberExpr()
1409 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitCXXDependentScopeMemberExpr()
1410 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitCXXDependentScopeMemberExpr()
1411 Writer.AddDeclRef(E->getFirstQualifierFoundInScope(), Record); in VisitCXXDependentScopeMemberExpr()
1412 Writer.AddDeclarationNameInfo(E->MemberNameInfo, Record); in VisitCXXDependentScopeMemberExpr()
1417 ASTStmtWriter::VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E) { in VisitDependentScopeDeclRefExpr() argument
1418 VisitExpr(E); in VisitDependentScopeDeclRefExpr()
1423 Record.push_back(E->HasTemplateKWAndArgsInfo); in VisitDependentScopeDeclRefExpr()
1424 if (E->HasTemplateKWAndArgsInfo) { in VisitDependentScopeDeclRefExpr()
1425 const ASTTemplateKWAndArgsInfo &Args = *E->getTemplateKWAndArgsInfo(); in VisitDependentScopeDeclRefExpr()
1430 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitDependentScopeDeclRefExpr()
1431 Writer.AddDeclarationNameInfo(E->NameInfo, Record); in VisitDependentScopeDeclRefExpr()
1436 ASTStmtWriter::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) { in VisitCXXUnresolvedConstructExpr() argument
1437 VisitExpr(E); in VisitCXXUnresolvedConstructExpr()
1438 Record.push_back(E->arg_size()); in VisitCXXUnresolvedConstructExpr()
1440 ArgI = E->arg_begin(), ArgE = E->arg_end(); ArgI != ArgE; ++ArgI) in VisitCXXUnresolvedConstructExpr()
1442 Writer.AddTypeSourceInfo(E->getTypeSourceInfo(), Record); in VisitCXXUnresolvedConstructExpr()
1443 Writer.AddSourceLocation(E->getLParenLoc(), Record); in VisitCXXUnresolvedConstructExpr()
1444 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitCXXUnresolvedConstructExpr()
1448 void ASTStmtWriter::VisitOverloadExpr(OverloadExpr *E) { in VisitOverloadExpr() argument
1449 VisitExpr(E); in VisitOverloadExpr()
1454 Record.push_back(E->HasTemplateKWAndArgsInfo); in VisitOverloadExpr()
1455 if (E->HasTemplateKWAndArgsInfo) { in VisitOverloadExpr()
1456 const ASTTemplateKWAndArgsInfo &Args = *E->getTemplateKWAndArgsInfo(); in VisitOverloadExpr()
1461 Record.push_back(E->getNumDecls()); in VisitOverloadExpr()
1463 OvI = E->decls_begin(), OvE = E->decls_end(); OvI != OvE; ++OvI) { in VisitOverloadExpr()
1468 Writer.AddDeclarationNameInfo(E->NameInfo, Record); in VisitOverloadExpr()
1469 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitOverloadExpr()
1472 void ASTStmtWriter::VisitUnresolvedMemberExpr(UnresolvedMemberExpr *E) { in VisitUnresolvedMemberExpr() argument
1473 VisitOverloadExpr(E); in VisitUnresolvedMemberExpr()
1474 Record.push_back(E->isArrow()); in VisitUnresolvedMemberExpr()
1475 Record.push_back(E->hasUnresolvedUsing()); in VisitUnresolvedMemberExpr()
1476 Writer.AddStmt(!E->isImplicitAccess() ? E->getBase() : nullptr); in VisitUnresolvedMemberExpr()
1477 Writer.AddTypeRef(E->getBaseType(), Record); in VisitUnresolvedMemberExpr()
1478 Writer.AddSourceLocation(E->getOperatorLoc(), Record); in VisitUnresolvedMemberExpr()
1482 void ASTStmtWriter::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E) { in VisitUnresolvedLookupExpr() argument
1483 VisitOverloadExpr(E); in VisitUnresolvedLookupExpr()
1484 Record.push_back(E->requiresADL()); in VisitUnresolvedLookupExpr()
1485 Record.push_back(E->isOverloaded()); in VisitUnresolvedLookupExpr()
1486 Writer.AddDeclRef(E->getNamingClass(), Record); in VisitUnresolvedLookupExpr()
1490 void ASTStmtWriter::VisitTypeTraitExpr(TypeTraitExpr *E) { in VisitTypeTraitExpr() argument
1491 VisitExpr(E); in VisitTypeTraitExpr()
1492 Record.push_back(E->TypeTraitExprBits.NumArgs); in VisitTypeTraitExpr()
1493 Record.push_back(E->TypeTraitExprBits.Kind); // FIXME: Stable encoding in VisitTypeTraitExpr()
1494 Record.push_back(E->TypeTraitExprBits.Value); in VisitTypeTraitExpr()
1495 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitTypeTraitExpr()
1496 for (unsigned I = 0, N = E->getNumArgs(); I != N; ++I) in VisitTypeTraitExpr()
1497 Writer.AddTypeSourceInfo(E->getArg(I), Record); in VisitTypeTraitExpr()
1501 void ASTStmtWriter::VisitArrayTypeTraitExpr(ArrayTypeTraitExpr *E) { in VisitArrayTypeTraitExpr() argument
1502 VisitExpr(E); in VisitArrayTypeTraitExpr()
1503 Record.push_back(E->getTrait()); in VisitArrayTypeTraitExpr()
1504 Record.push_back(E->getValue()); in VisitArrayTypeTraitExpr()
1505 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitArrayTypeTraitExpr()
1506 Writer.AddTypeSourceInfo(E->getQueriedTypeSourceInfo(), Record); in VisitArrayTypeTraitExpr()
1510 void ASTStmtWriter::VisitExpressionTraitExpr(ExpressionTraitExpr *E) { in VisitExpressionTraitExpr() argument
1511 VisitExpr(E); in VisitExpressionTraitExpr()
1512 Record.push_back(E->getTrait()); in VisitExpressionTraitExpr()
1513 Record.push_back(E->getValue()); in VisitExpressionTraitExpr()
1514 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitExpressionTraitExpr()
1515 Writer.AddStmt(E->getQueriedExpression()); in VisitExpressionTraitExpr()
1519 void ASTStmtWriter::VisitCXXNoexceptExpr(CXXNoexceptExpr *E) { in VisitCXXNoexceptExpr() argument
1520 VisitExpr(E); in VisitCXXNoexceptExpr()
1521 Record.push_back(E->getValue()); in VisitCXXNoexceptExpr()
1522 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitCXXNoexceptExpr()
1523 Writer.AddStmt(E->getOperand()); in VisitCXXNoexceptExpr()
1527 void ASTStmtWriter::VisitPackExpansionExpr(PackExpansionExpr *E) { in VisitPackExpansionExpr() argument
1528 VisitExpr(E); in VisitPackExpansionExpr()
1529 Writer.AddSourceLocation(E->getEllipsisLoc(), Record); in VisitPackExpansionExpr()
1530 Record.push_back(E->NumExpansions); in VisitPackExpansionExpr()
1531 Writer.AddStmt(E->getPattern()); in VisitPackExpansionExpr()
1535 void ASTStmtWriter::VisitSizeOfPackExpr(SizeOfPackExpr *E) { in VisitSizeOfPackExpr() argument
1536 VisitExpr(E); in VisitSizeOfPackExpr()
1537 Writer.AddSourceLocation(E->OperatorLoc, Record); in VisitSizeOfPackExpr()
1538 Writer.AddSourceLocation(E->PackLoc, Record); in VisitSizeOfPackExpr()
1539 Writer.AddSourceLocation(E->RParenLoc, Record); in VisitSizeOfPackExpr()
1540 Record.push_back(E->Length); in VisitSizeOfPackExpr()
1541 Writer.AddDeclRef(E->Pack, Record); in VisitSizeOfPackExpr()
1546 SubstNonTypeTemplateParmExpr *E) { in VisitSubstNonTypeTemplateParmExpr() argument
1547 VisitExpr(E); in VisitSubstNonTypeTemplateParmExpr()
1548 Writer.AddDeclRef(E->getParameter(), Record); in VisitSubstNonTypeTemplateParmExpr()
1549 Writer.AddSourceLocation(E->getNameLoc(), Record); in VisitSubstNonTypeTemplateParmExpr()
1550 Writer.AddStmt(E->getReplacement()); in VisitSubstNonTypeTemplateParmExpr()
1555 SubstNonTypeTemplateParmPackExpr *E) { in VisitSubstNonTypeTemplateParmPackExpr() argument
1556 VisitExpr(E); in VisitSubstNonTypeTemplateParmPackExpr()
1557 Writer.AddDeclRef(E->getParameterPack(), Record); in VisitSubstNonTypeTemplateParmPackExpr()
1558 Writer.AddTemplateArgument(E->getArgumentPack(), Record); in VisitSubstNonTypeTemplateParmPackExpr()
1559 Writer.AddSourceLocation(E->getParameterPackLocation(), Record); in VisitSubstNonTypeTemplateParmPackExpr()
1563 void ASTStmtWriter::VisitFunctionParmPackExpr(FunctionParmPackExpr *E) { in VisitFunctionParmPackExpr() argument
1564 VisitExpr(E); in VisitFunctionParmPackExpr()
1565 Record.push_back(E->getNumExpansions()); in VisitFunctionParmPackExpr()
1566 Writer.AddDeclRef(E->getParameterPack(), Record); in VisitFunctionParmPackExpr()
1567 Writer.AddSourceLocation(E->getParameterPackLocation(), Record); in VisitFunctionParmPackExpr()
1568 for (FunctionParmPackExpr::iterator I = E->begin(), End = E->end(); in VisitFunctionParmPackExpr()
1574 void ASTStmtWriter::VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *E) { in VisitMaterializeTemporaryExpr() argument
1575 VisitExpr(E); in VisitMaterializeTemporaryExpr()
1576 Writer.AddStmt(E->getTemporary()); in VisitMaterializeTemporaryExpr()
1577 Writer.AddDeclRef(E->getExtendingDecl(), Record); in VisitMaterializeTemporaryExpr()
1578 Record.push_back(E->getManglingNumber()); in VisitMaterializeTemporaryExpr()
1582 void ASTStmtWriter::VisitCXXFoldExpr(CXXFoldExpr *E) { in VisitCXXFoldExpr() argument
1583 VisitExpr(E); in VisitCXXFoldExpr()
1584 Writer.AddSourceLocation(E->LParenLoc, Record); in VisitCXXFoldExpr()
1585 Writer.AddSourceLocation(E->EllipsisLoc, Record); in VisitCXXFoldExpr()
1586 Writer.AddSourceLocation(E->RParenLoc, Record); in VisitCXXFoldExpr()
1587 Writer.AddStmt(E->SubExprs[0]); in VisitCXXFoldExpr()
1588 Writer.AddStmt(E->SubExprs[1]); in VisitCXXFoldExpr()
1589 Record.push_back(E->Opcode); in VisitCXXFoldExpr()
1593 void ASTStmtWriter::VisitOpaqueValueExpr(OpaqueValueExpr *E) { in VisitOpaqueValueExpr() argument
1594 VisitExpr(E); in VisitOpaqueValueExpr()
1595 Writer.AddStmt(E->getSourceExpr()); in VisitOpaqueValueExpr()
1596 Writer.AddSourceLocation(E->getLocation(), Record); in VisitOpaqueValueExpr()
1600 void ASTStmtWriter::VisitTypoExpr(TypoExpr *E) { in VisitTypoExpr() argument
1601 VisitExpr(E); in VisitTypoExpr()
1610 void ASTStmtWriter::VisitCUDAKernelCallExpr(CUDAKernelCallExpr *E) { in VisitCUDAKernelCallExpr() argument
1611 VisitCallExpr(E); in VisitCUDAKernelCallExpr()
1612 Writer.AddStmt(E->getConfig()); in VisitCUDAKernelCallExpr()
1619 void ASTStmtWriter::VisitAsTypeExpr(AsTypeExpr *E) { in VisitAsTypeExpr() argument
1620 VisitExpr(E); in VisitAsTypeExpr()
1621 Writer.AddSourceLocation(E->getBuiltinLoc(), Record); in VisitAsTypeExpr()
1622 Writer.AddSourceLocation(E->getRParenLoc(), Record); in VisitAsTypeExpr()
1623 Writer.AddStmt(E->getSrcExpr()); in VisitAsTypeExpr()
1630 void ASTStmtWriter::VisitMSPropertyRefExpr(MSPropertyRefExpr *E) { in VisitMSPropertyRefExpr() argument
1631 VisitExpr(E); in VisitMSPropertyRefExpr()
1632 Record.push_back(E->isArrow()); in VisitMSPropertyRefExpr()
1633 Writer.AddStmt(E->getBaseExpr()); in VisitMSPropertyRefExpr()
1634 Writer.AddNestedNameSpecifierLoc(E->getQualifierLoc(), Record); in VisitMSPropertyRefExpr()
1635 Writer.AddSourceLocation(E->getMemberLoc(), Record); in VisitMSPropertyRefExpr()
1636 Writer.AddDeclRef(E->getPropertyDecl(), Record); in VisitMSPropertyRefExpr()
1640 void ASTStmtWriter::VisitCXXUuidofExpr(CXXUuidofExpr *E) { in VisitCXXUuidofExpr() argument
1641 VisitExpr(E); in VisitCXXUuidofExpr()
1642 Writer.AddSourceRange(E->getSourceRange(), Record); in VisitCXXUuidofExpr()
1643 if (E->isTypeOperand()) { in VisitCXXUuidofExpr()
1644 Writer.AddTypeSourceInfo(E->getTypeOperandSourceInfo(), Record); in VisitCXXUuidofExpr()
1647 Writer.AddStmt(E->getExprOperand()); in VisitCXXUuidofExpr()
1861 void ASTStmtWriter::VisitOMPExecutableDirective(OMPExecutableDirective *E) { in VisitOMPExecutableDirective() argument
1862 Writer.AddSourceLocation(E->getLocStart(), Record); in VisitOMPExecutableDirective()
1863 Writer.AddSourceLocation(E->getLocEnd(), Record); in VisitOMPExecutableDirective()
1865 for (unsigned i = 0; i < E->getNumClauses(); ++i) { in VisitOMPExecutableDirective()
1866 ClauseWriter.writeClause(E->getClause(i)); in VisitOMPExecutableDirective()
1868 if (E->hasAssociatedStmt()) in VisitOMPExecutableDirective()
1869 Writer.AddStmt(E->getAssociatedStmt()); in VisitOMPExecutableDirective()