Lines Matching full:init
71 // C++17 [class.base.init]p8: in getEntityLifetime()
74 // C++17 [class.base.init]p11: in getEntityLifetime()
158 // [dcl.init, 9.3] persists until the completion of the full-expression in getEntityLifetime()
239 Expr *Init, LocalVisitor Visit,
244 Expr *Init, ReferenceKind RK,
492 /// glvalue expression \c Init.
494 Expr *Init, ReferenceKind RK, in visitLocalsRetainedByReferenceBinding() argument
502 Old = Init; in visitLocalsRetainedByReferenceBinding()
504 if (auto *FE = dyn_cast<FullExpr>(Init)) in visitLocalsRetainedByReferenceBinding()
505 Init = FE->getSubExpr(); in visitLocalsRetainedByReferenceBinding()
507 if (InitListExpr *ILE = dyn_cast<InitListExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
510 Init = ILE->getInit(0); in visitLocalsRetainedByReferenceBinding()
515 Init = const_cast<Expr *>(Init->skipRValueSubobjectAdjustments()); in visitLocalsRetainedByReferenceBinding()
519 if (CastExpr *CE = dyn_cast<CastExpr>(Init)) in visitLocalsRetainedByReferenceBinding()
521 Init = CE->getSubExpr(); in visitLocalsRetainedByReferenceBinding()
525 if (auto *ASE = dyn_cast<ArraySubscriptExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
526 Init = ASE->getBase(); in visitLocalsRetainedByReferenceBinding()
527 auto *ICE = dyn_cast<ImplicitCastExpr>(Init); in visitLocalsRetainedByReferenceBinding()
529 Init = ICE->getSubExpr(); in visitLocalsRetainedByReferenceBinding()
533 return visitLocalsRetainedByInitializer(Path, Init, Visit, true, in visitLocalsRetainedByReferenceBinding()
539 if (auto *DIE = dyn_cast<CXXDefaultInitExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
542 Init = DIE->getExpr(); in visitLocalsRetainedByReferenceBinding()
544 } while (Init != Old); in visitLocalsRetainedByReferenceBinding()
546 if (auto *MTE = dyn_cast<MaterializeTemporaryExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
552 if (auto *M = dyn_cast<MemberExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
560 if (isa<CallExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
562 handleGslAnnotatedTypes(Path, Init, Visit); in visitLocalsRetainedByReferenceBinding()
563 return visitLifetimeBoundArguments(Path, Init, Visit); in visitLocalsRetainedByReferenceBinding()
566 switch (Init->getStmtClass()) { in visitLocalsRetainedByReferenceBinding()
570 auto *DRE = cast<DeclRefExpr>(Init); in visitLocalsRetainedByReferenceBinding()
594 const UnaryOperator *U = cast<UnaryOperator>(Init); in visitLocalsRetainedByReferenceBinding()
603 cast<ArraySectionExpr>(Init)->getBase(), in visitLocalsRetainedByReferenceBinding()
610 auto *C = cast<AbstractConditionalOperator>(Init); in visitLocalsRetainedByReferenceBinding()
621 if (auto *CLE = dyn_cast<CompoundLiteralExpr>(Init)) { in visitLocalsRetainedByReferenceBinding()
636 /// the prvalue expression \c Init.
638 Expr *Init, LocalVisitor Visit, in visitLocalsRetainedByInitializer() argument
645 Old = Init; in visitLocalsRetainedByInitializer()
649 if (auto *DIE = dyn_cast<CXXDefaultInitExpr>(Init)) { in visitLocalsRetainedByInitializer()
652 Init = DIE->getExpr(); in visitLocalsRetainedByInitializer()
655 if (auto *FE = dyn_cast<FullExpr>(Init)) in visitLocalsRetainedByInitializer()
656 Init = FE->getSubExpr(); in visitLocalsRetainedByInitializer()
659 Init = const_cast<Expr *>(Init->skipRValueSubobjectAdjustments()); in visitLocalsRetainedByInitializer()
661 if (CXXBindTemporaryExpr *BTE = dyn_cast<CXXBindTemporaryExpr>(Init)) in visitLocalsRetainedByInitializer()
662 Init = BTE->getSubExpr(); in visitLocalsRetainedByInitializer()
664 Init = Init->IgnoreParens(); in visitLocalsRetainedByInitializer()
667 if (auto *CE = dyn_cast<CastExpr>(Init)) { in visitLocalsRetainedByInitializer()
674 Path, Init, RK_ReferenceBinding, in visitLocalsRetainedByInitializer()
729 Init = CE->getSubExpr(); in visitLocalsRetainedByInitializer()
731 } while (Old != Init); in visitLocalsRetainedByInitializer()
733 // C++17 [dcl.init.list]p6: in visitLocalsRetainedByInitializer()
736 if (auto *ILE = dyn_cast<CXXStdInitializerListExpr>(Init)) in visitLocalsRetainedByInitializer()
741 if (InitListExpr *ILE = dyn_cast<InitListExpr>(Init)) { in visitLocalsRetainedByInitializer()
762 assert(RD->isAggregate() && "aggregate init on non-aggregate"); in visitLocalsRetainedByInitializer()
801 // The lifetime of an init-capture is that of the closure object constructed in visitLocalsRetainedByInitializer()
803 if (auto *LE = dyn_cast<LambdaExpr>(Init)) { in visitLocalsRetainedByInitializer()
825 if (auto *CCE = dyn_cast<CXXConstructExpr>(Init)) { in visitLocalsRetainedByInitializer()
839 if (isa<CallExpr>(Init) || isa<CXXConstructExpr>(Init)) { in visitLocalsRetainedByInitializer()
841 handleGslAnnotatedTypes(Path, Init, Visit); in visitLocalsRetainedByInitializer()
842 return visitLifetimeBoundArguments(Path, Init, Visit); in visitLocalsRetainedByInitializer()
845 switch (Init->getStmtClass()) { in visitLocalsRetainedByInitializer()
847 auto *UO = cast<UnaryOperator>(Init); in visitLocalsRetainedByInitializer()
867 auto *BO = cast<BinaryOperator>(Init); in visitLocalsRetainedByInitializer()
883 auto *C = cast<AbstractConditionalOperator>(Init); in visitLocalsRetainedByInitializer()
896 if (cast<BlockExpr>(Init)->getBlockDecl()->hasCaptures()) { in visitLocalsRetainedByInitializer()
898 Visit(Path, Local(cast<BlockExpr>(Init)), RK_ReferenceBinding); in visitLocalsRetainedByInitializer()
904 Visit(Path, Local(cast<AddrLabelExpr>(Init)), RK_ReferenceBinding); in visitLocalsRetainedByInitializer()
993 const AssignedEntity *AEntity, Expr *Init, in checkExprLifetimeImpl() argument
1085 << ExtendingEntity->getDecl() << Init->isGLValue() << DiagRange; in checkExprLifetimeImpl()
1270 // FIXME: We can't easily tell apart an init-capture from a nested in checkExprLifetimeImpl()
1271 // capture of an init-capture. in checkExprLifetimeImpl()
1290 Path.push_back({IndirectLocalPathEntry::GslPointerAssignment, Init}); in checkExprLifetimeImpl()
1292 if (Init->isGLValue()) in checkExprLifetimeImpl()
1293 visitLocalsRetainedByReferenceBinding(Path, Init, RK_ReferenceBinding, in checkExprLifetimeImpl()
1298 Path, Init, TemporaryVisitor, in checkExprLifetimeImpl()
1304 Expr *Init) { in checkExprLifetime() argument
1311 /*AEntity*/ nullptr, Init, EnableLifetimeWarnings); in checkExprLifetime()
1315 Expr *Init) { in checkExprLifetime() argument
1327 Init, EnableLifetimeWarnings); in checkExprLifetime()