Lines Matching refs:CFGBlock

376   CFGBlock *block = nullptr;
380 BlockScopePosPair(CFGBlock *b, LocalScope::const_iterator scopePos) in BlockScopePosPair()
477 CFGBlock *Block = nullptr;
480 CFGBlock *Succ = nullptr;
485 CFGBlock *SwitchTerminatedBlock = nullptr;
486 CFGBlock *DefaultCaseBlock = nullptr;
492 CFGBlock *TryTerminatedBlock = nullptr;
546 CFGBlock *VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc);
547 CFGBlock *VisitAddrLabelExpr(AddrLabelExpr *A, AddStmtChoice asc);
548 CFGBlock *VisitAttributedStmt(AttributedStmt *A, AddStmtChoice asc);
549 CFGBlock *VisitBinaryOperator(BinaryOperator *B, AddStmtChoice asc);
550 CFGBlock *VisitBreakStmt(BreakStmt *B);
551 CFGBlock *VisitCallExpr(CallExpr *C, AddStmtChoice asc);
552 CFGBlock *VisitCaseStmt(CaseStmt *C);
553 CFGBlock *VisitChooseExpr(ChooseExpr *C, AddStmtChoice asc);
554 CFGBlock *VisitCompoundStmt(CompoundStmt *C, bool ExternallyDestructed);
555 CFGBlock *VisitConditionalOperator(AbstractConditionalOperator *C,
557 CFGBlock *VisitContinueStmt(ContinueStmt *C);
558 CFGBlock *VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E,
560 CFGBlock *VisitCXXCatchStmt(CXXCatchStmt *S);
561 CFGBlock *VisitCXXConstructExpr(CXXConstructExpr *C, AddStmtChoice asc);
562 CFGBlock *VisitCXXNewExpr(CXXNewExpr *DE, AddStmtChoice asc);
563 CFGBlock *VisitCXXDeleteExpr(CXXDeleteExpr *DE, AddStmtChoice asc);
564 CFGBlock *VisitCXXForRangeStmt(CXXForRangeStmt *S);
565 CFGBlock *VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E,
567 CFGBlock *VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *C,
569 CFGBlock *VisitCXXThrowExpr(CXXThrowExpr *T);
570 CFGBlock *VisitCXXTryStmt(CXXTryStmt *S);
571 CFGBlock *VisitCXXTypeidExpr(CXXTypeidExpr *S, AddStmtChoice asc);
572 CFGBlock *VisitDeclStmt(DeclStmt *DS);
573 CFGBlock *VisitDeclSubExpr(DeclStmt *DS);
574 CFGBlock *VisitDefaultStmt(DefaultStmt *D);
575 CFGBlock *VisitDoStmt(DoStmt *D);
576 CFGBlock *VisitExprWithCleanups(ExprWithCleanups *E,
578 CFGBlock *VisitForStmt(ForStmt *F);
579 CFGBlock *VisitGotoStmt(GotoStmt *G);
580 CFGBlock *VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc);
581 CFGBlock *VisitIfStmt(IfStmt *I);
582 CFGBlock *VisitImplicitCastExpr(ImplicitCastExpr *E, AddStmtChoice asc);
583 CFGBlock *VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc);
584 CFGBlock *VisitIndirectGotoStmt(IndirectGotoStmt *I);
585 CFGBlock *VisitLabelStmt(LabelStmt *L);
586 CFGBlock *VisitBlockExpr(BlockExpr *E, AddStmtChoice asc);
587 CFGBlock *VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc);
588 CFGBlock *VisitLogicalOperator(BinaryOperator *B);
589 std::pair<CFGBlock *, CFGBlock *> VisitLogicalOperator(BinaryOperator *B,
591 CFGBlock *TrueBlock,
592 CFGBlock *FalseBlock);
593 CFGBlock *VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *MTE,
595 CFGBlock *VisitMemberExpr(MemberExpr *M, AddStmtChoice asc);
596 CFGBlock *VisitObjCAtCatchStmt(ObjCAtCatchStmt *S);
597 CFGBlock *VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S);
598 CFGBlock *VisitObjCAtThrowStmt(ObjCAtThrowStmt *S);
599 CFGBlock *VisitObjCAtTryStmt(ObjCAtTryStmt *S);
600 CFGBlock *VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S);
601 CFGBlock *VisitObjCForCollectionStmt(ObjCForCollectionStmt *S);
602 CFGBlock *VisitObjCMessageExpr(ObjCMessageExpr *E, AddStmtChoice asc);
603 CFGBlock *VisitPseudoObjectExpr(PseudoObjectExpr *E);
604 CFGBlock *VisitReturnStmt(Stmt *S);
605 CFGBlock *VisitCoroutineSuspendExpr(CoroutineSuspendExpr *S,
607 CFGBlock *VisitSEHExceptStmt(SEHExceptStmt *S);
608 CFGBlock *VisitSEHFinallyStmt(SEHFinallyStmt *S);
609 CFGBlock *VisitSEHLeaveStmt(SEHLeaveStmt *S);
610 CFGBlock *VisitSEHTryStmt(SEHTryStmt *S);
611 CFGBlock *VisitStmtExpr(StmtExpr *S, AddStmtChoice asc);
612 CFGBlock *VisitSwitchStmt(SwitchStmt *S);
613 CFGBlock *VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E,
615 CFGBlock *VisitUnaryOperator(UnaryOperator *U, AddStmtChoice asc);
616 CFGBlock *VisitWhileStmt(WhileStmt *W);
617 CFGBlock *VisitArrayInitLoopExpr(ArrayInitLoopExpr *A, AddStmtChoice asc);
619 CFGBlock *Visit(Stmt *S, AddStmtChoice asc = AddStmtChoice::NotAlwaysAdd,
621 CFGBlock *VisitStmt(Stmt *S, AddStmtChoice asc);
622 CFGBlock *VisitChildren(Stmt *S);
623 CFGBlock *VisitNoRecurse(Expr *E, AddStmtChoice asc);
624 CFGBlock *VisitOMPExecutableDirective(OMPExecutableDirective *D,
627 void maybeAddScopeBeginForVarDecl(CFGBlock *B, const VarDecl *VD, in maybeAddScopeBeginForVarDecl()
678 void setDecisionPoint(CFGBlock *S, CXXBindTemporaryExpr *E) { in setDecisionPoint()
685 CFGBlock *Succ = nullptr;
691 CFGBlock *VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
693 CFGBlock *VisitChildrenForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
695 CFGBlock *VisitBinaryOperatorForTemporaryDtors(BinaryOperator *E,
698 CFGBlock *VisitCXXBindTemporaryExprForTemporaryDtors(
700 CFGBlock *VisitConditionalOperatorForTemporaryDtors(
704 CFGBlock *FalseSucc = nullptr);
707 CFGBlock *NYS() { in NYS()
750 CFGBlock *createBlock(bool add_successor = true);
751 CFGBlock *createNoReturnBlock();
753 CFGBlock *addStmt(Stmt *S) { in addStmt()
757 CFGBlock *addInitializer(CXXCtorInitializer *I);
797 void appendStmt(CFGBlock *B, const Stmt *S) { in appendStmt()
806 void appendConstructor(CFGBlock *B, CXXConstructExpr *CE) { in appendConstructor()
817 void appendCall(CFGBlock *B, CallExpr *CE) { in appendCall()
831 void appendInitializer(CFGBlock *B, CXXCtorInitializer *I) { in appendInitializer()
835 void appendNewAllocator(CFGBlock *B, CXXNewExpr *NE) { in appendNewAllocator()
839 void appendBaseDtor(CFGBlock *B, const CXXBaseSpecifier *BS) { in appendBaseDtor()
843 void appendMemberDtor(CFGBlock *B, FieldDecl *FD) { in appendMemberDtor()
847 void appendObjCMessage(CFGBlock *B, ObjCMessageExpr *ME) { in appendObjCMessage()
861 void appendTemporaryDtor(CFGBlock *B, CXXBindTemporaryExpr *E) { in appendTemporaryDtor()
865 void appendAutomaticObjDtor(CFGBlock *B, VarDecl *VD, Stmt *S) { in appendAutomaticObjDtor()
869 void appendLifetimeEnds(CFGBlock *B, VarDecl *VD, Stmt *S) { in appendLifetimeEnds()
873 void appendLoopExit(CFGBlock *B, const Stmt *LoopStmt) { in appendLoopExit()
877 void appendDeleteDtor(CFGBlock *B, CXXRecordDecl *RD, CXXDeleteExpr *DE) { in appendDeleteDtor()
881 void prependAutomaticObjDtorsWithTerminator(CFGBlock *Blk,
884 void prependAutomaticObjLifetimeWithTerminator(CFGBlock *Blk,
889 prependAutomaticObjScopeEndWithTerminator(CFGBlock *Blk,
893 void addSuccessor(CFGBlock *B, CFGBlock *S, bool IsReachable = true) { in addSuccessor()
894 B->addSuccessor(CFGBlock::AdjacentBlock(S, IsReachable), in addSuccessor()
900 void addSuccessor(CFGBlock *B, CFGBlock *ReachableBlock, CFGBlock *AltBlock) { in addSuccessor()
901 B->addSuccessor(CFGBlock::AdjacentBlock(ReachableBlock, AltBlock), in addSuccessor()
905 void appendScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in appendScopeBegin()
910 void prependScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in prependScopeBegin()
915 void appendScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in appendScopeEnd()
920 void prependScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in prependScopeEnd()
1567 CFGBlock *B = addStmt(Statement); in buildCFG()
1585 CFGBlock *VBaseSucc = nullptr; in buildCFG()
1617 CFGBlock *B = I->block; in buildCFG()
1635 CFGBlock *Successor = (I+1)->block; in buildCFG()
1653 if (CFGBlock *B = cfg->getIndirectGotoBlock()) in buildCFG()
1678 CFGBlock *CFGBuilder::createBlock(bool add_successor) { in createBlock()
1679 CFGBlock *B = cfg->createBlock(); in createBlock()
1688 CFGBlock *CFGBuilder::createNoReturnBlock() { in createNoReturnBlock()
1689 CFGBlock *B = createBlock(false); in createNoReturnBlock()
1696 CFGBlock *CFGBuilder::addInitializer(CXXCtorInitializer *I) { in addInitializer()
1742 if (CFGBlock *R = Visit(Child)) in addInitializer()
2126 void CFGBuilder::prependAutomaticObjDtorsWithTerminator(CFGBlock *Blk, in prependAutomaticObjDtorsWithTerminator()
2131 CFGBlock::iterator InsertPos in prependAutomaticObjDtorsWithTerminator()
2144 CFGBlock *Blk, LocalScope::const_iterator B, LocalScope::const_iterator E) { in prependAutomaticObjLifetimeWithTerminator()
2148 CFGBlock::iterator InsertPos = in prependAutomaticObjLifetimeWithTerminator()
2163 CFGBlock *Blk, LocalScope::const_iterator B, LocalScope::const_iterator E) { in prependAutomaticObjScopeEndWithTerminator()
2167 CFGBlock::iterator InsertPos = in prependAutomaticObjScopeEndWithTerminator()
2179 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc, in Visit()
2408 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) { in VisitStmt()
2418 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) { in VisitChildren()
2419 CFGBlock *B = Block; in VisitChildren()
2426 if (CFGBlock *R = Visit(Child)) in VisitChildren()
2432 CFGBlock *CFGBuilder::VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc) { in VisitInitListExpr()
2437 CFGBlock *B = Block; in VisitInitListExpr()
2443 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2448 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2455 CFGBlock *CFGBuilder::VisitAddrLabelExpr(AddrLabelExpr *A, in VisitAddrLabelExpr()
2474 CFGBlock *CFGBuilder::VisitAttributedStmt(AttributedStmt *A, in VisitAttributedStmt()
2492 CFGBlock *CFGBuilder::VisitUnaryOperator(UnaryOperator *U, AddStmtChoice asc) { in VisitUnaryOperator()
2504 CFGBlock *CFGBuilder::VisitLogicalOperator(BinaryOperator *B) { in VisitLogicalOperator()
2505 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitLogicalOperator()
2515 std::pair<CFGBlock*, CFGBlock*>
2518 CFGBlock *TrueBlock, in VisitLogicalOperator()
2519 CFGBlock *FalseBlock) { in VisitLogicalOperator()
2524 CFGBlock *RHSBlock, *ExitBlock; in VisitLogicalOperator()
2583 CFGBlock *LHSBlock = createBlock(false); in VisitLogicalOperator()
2587 CFGBlock *EntryLHSBlock = addStmt(LHS); in VisitLogicalOperator()
2608 CFGBlock *CFGBuilder::VisitBinaryOperator(BinaryOperator *B, in VisitBinaryOperator()
2638 CFGBlock *RBlock = Visit(B->getRHS()); in VisitBinaryOperator()
2639 CFGBlock *LBlock = Visit(B->getLHS()); in VisitBinaryOperator()
2646 CFGBlock *CFGBuilder::VisitNoRecurse(Expr *E, AddStmtChoice asc) { in VisitNoRecurse()
2654 CFGBlock *CFGBuilder::VisitBreakStmt(BreakStmt *B) { in VisitBreakStmt()
2690 CFGBlock *CFGBuilder::VisitCallExpr(CallExpr *C, AddStmtChoice asc) { in VisitCallExpr()
2775 CFGBlock *CFGBuilder::VisitChooseExpr(ChooseExpr *C, in VisitChooseExpr()
2777 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitChooseExpr()
2785 CFGBlock *LHSBlock = Visit(C->getLHS(), alwaysAdd); in VisitChooseExpr()
2791 CFGBlock *RHSBlock = Visit(C->getRHS(), alwaysAdd); in VisitChooseExpr()
2804 CFGBlock *CFGBuilder::VisitCompoundStmt(CompoundStmt *C, in VisitCompoundStmt()
2815 CFGBlock *LastBlock = Block; in VisitCompoundStmt()
2820 CFGBlock *newBlock = Visit(S, AddStmtChoice::AlwaysAdd, in VisitCompoundStmt()
2835 CFGBlock *CFGBuilder::VisitConditionalOperator(AbstractConditionalOperator *C, in VisitConditionalOperator()
2842 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitConditionalOperator()
2855 CFGBlock *LHSBlock = nullptr; in VisitConditionalOperator()
2868 CFGBlock *RHSBlock = Visit(C->getFalseExpr(), alwaysAdd); in VisitConditionalOperator()
2902 CFGBlock *CFGBuilder::VisitDeclStmt(DeclStmt *DS) { in VisitDeclStmt()
2912 CFGBlock *B = nullptr; in VisitDeclStmt()
2935 CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) { in VisitDeclSubExpr()
2947 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2950 if (CFGBlock *NewBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2967 CFGBlock *blockAfterStaticInit = nullptr; in VisitDeclSubExpr()
3023 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
3030 if (CFGBlock *newBlock = Visit(EC->getSubExpr())) in VisitDeclSubExpr()
3034 if (CFGBlock *newBlock = Visit(Init)) in VisitDeclSubExpr()
3044 if (CFGBlock *newBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
3054 CFGBlock *B = LastBlock; in VisitDeclSubExpr()
3067 CFGBlock *CFGBuilder::VisitIfStmt(IfStmt *I) { in VisitIfStmt()
3099 CFGBlock *ElseBlock = Succ; in VisitIfStmt()
3124 CFGBlock *ThenBlock; in VisitIfStmt()
3161 CFGBlock *LastBlock; in VisitIfStmt()
3203 CFGBlock *CFGBuilder::VisitReturnStmt(Stmt *S) { in VisitReturnStmt()
3239 if (CFGBlock *R = Visit(CRS->getPromiseCall())) in VisitReturnStmt()
3245 if (CFGBlock *R = Visit(RV)) in VisitReturnStmt()
3251 CFGBlock *CFGBuilder::VisitCoroutineSuspendExpr(CoroutineSuspendExpr *E, in VisitCoroutineSuspendExpr()
3260 CFGBlock *B = Block; in VisitCoroutineSuspendExpr()
3272 CFGBlock *CFGBuilder::VisitSEHExceptStmt(SEHExceptStmt *ES) { in VisitSEHExceptStmt()
3281 CFGBlock *SEHExceptBlock = Block; in VisitSEHExceptStmt()
3300 CFGBlock *CFGBuilder::VisitSEHFinallyStmt(SEHFinallyStmt *FS) { in VisitSEHFinallyStmt()
3304 CFGBlock *CFGBuilder::VisitSEHLeaveStmt(SEHLeaveStmt *LS) { in VisitSEHLeaveStmt()
3325 CFGBlock *CFGBuilder::VisitSEHTryStmt(SEHTryStmt *Terminator) { in VisitSEHTryStmt()
3328 CFGBlock *SEHTrySuccessor = nullptr; in VisitSEHTryStmt()
3340 CFGBlock *PrevSEHTryTerminatedBlock = TryTerminatedBlock; in VisitSEHTryStmt()
3343 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitSEHTryStmt()
3352 CFGBlock *ExceptBlock = VisitSEHExceptStmt(Except); in VisitSEHTryStmt()
3382 CFGBlock *CFGBuilder::VisitLabelStmt(LabelStmt *L) { in VisitLabelStmt()
3385 CFGBlock *LabelBlock = Block; in VisitLabelStmt()
3411 CFGBlock *CFGBuilder::VisitBlockExpr(BlockExpr *E, AddStmtChoice asc) { in VisitBlockExpr()
3412 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitBlockExpr()
3415 CFGBlock *Tmp = Visit(CopyExpr); in VisitBlockExpr()
3423 CFGBlock *CFGBuilder::VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc) { in VisitLambdaExpr()
3424 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitLambdaExpr()
3440 CFGBlock *Tmp = Visit(Init); in VisitLambdaExpr()
3448 CFGBlock *CFGBuilder::VisitGotoStmt(GotoStmt *G) { in VisitGotoStmt()
3470 CFGBlock *CFGBuilder::VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc) { in VisitGCCAsmStmt()
3492 CFGBlock *CFGBuilder::VisitForStmt(ForStmt *F) { in VisitForStmt()
3493 CFGBlock *LoopSuccessor = nullptr; in VisitForStmt()
3528 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitForStmt()
3587 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitForStmt()
3670 CFGBlock *
3680 CFGBlock *CFGBuilder::VisitMemberExpr(MemberExpr *M, AddStmtChoice asc) { in VisitMemberExpr()
3688 CFGBlock *CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) { in VisitObjCForCollectionStmt()
3720 CFGBlock *LoopSuccessor = nullptr; in VisitObjCForCollectionStmt()
3731 CFGBlock *ExitConditionBlock = createBlock(false); in VisitObjCForCollectionStmt()
3745 CFGBlock *EntryConditionBlock = Visit(S->getElement(), in VisitObjCForCollectionStmt()
3767 CFGBlock *LoopBackBlock = nullptr; in VisitObjCForCollectionStmt()
3774 CFGBlock *BodyBlock = addStmt(S->getBody()); in VisitObjCForCollectionStmt()
3796 CFGBlock *CFGBuilder::VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S) { in VisitObjCAutoreleasePoolStmt()
3802 CFGBlock *CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S) { in VisitObjCAtSynchronizedStmt()
3806 CFGBlock *SyncBlock = addStmt(S->getSynchBody()); in VisitObjCAtSynchronizedStmt()
3826 CFGBlock *CFGBuilder::VisitPseudoObjectExpr(PseudoObjectExpr *E) { in VisitPseudoObjectExpr()
3832 CFGBlock *lastBlock = Block; in VisitPseudoObjectExpr()
3844 if (CFGBlock *B = Visit(Semantic)) in VisitPseudoObjectExpr()
3851 CFGBlock *CFGBuilder::VisitWhileStmt(WhileStmt *W) { in VisitWhileStmt()
3852 CFGBlock *LoopSuccessor = nullptr; in VisitWhileStmt()
3878 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitWhileStmt()
3918 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitWhileStmt()
3986 CFGBlock *CFGBuilder::VisitArrayInitLoopExpr(ArrayInitLoopExpr *A, in VisitArrayInitLoopExpr()
3993 CFGBlock *B = Block; in VisitArrayInitLoopExpr()
3995 if (CFGBlock *R = Visit(A->getSubExpr())) in VisitArrayInitLoopExpr()
4001 if (CFGBlock *R = Visit(OVE->getSourceExpr())) in VisitArrayInitLoopExpr()
4007 CFGBlock *CFGBuilder::VisitObjCAtCatchStmt(ObjCAtCatchStmt *CS) { in VisitObjCAtCatchStmt()
4018 CFGBlock *CatchBlock = Block; in VisitObjCAtCatchStmt()
4037 CFGBlock *CFGBuilder::VisitObjCAtThrowStmt(ObjCAtThrowStmt *S) { in VisitObjCAtThrowStmt()
4057 CFGBlock *CFGBuilder::VisitObjCAtTryStmt(ObjCAtTryStmt *Terminator) { in VisitObjCAtTryStmt()
4060 CFGBlock *TrySuccessor = nullptr; in VisitObjCAtTryStmt()
4073 CFGBlock *PrevTryTerminatedBlock = TryTerminatedBlock; in VisitObjCAtTryStmt()
4076 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitObjCAtTryStmt()
4088 CFGBlock *CatchBlock = VisitObjCAtCatchStmt(CS); in VisitObjCAtTryStmt()
4116 CFGBlock *CFGBuilder::VisitObjCMessageExpr(ObjCMessageExpr *ME, in VisitObjCMessageExpr()
4126 CFGBlock *CFGBuilder::VisitCXXThrowExpr(CXXThrowExpr *T) { in VisitCXXThrowExpr()
4146 CFGBlock *CFGBuilder::VisitCXXTypeidExpr(CXXTypeidExpr *S, AddStmtChoice asc) { in VisitCXXTypeidExpr()
4165 CFGBlock *CFGBuilder::VisitDoStmt(DoStmt *D) { in VisitDoStmt()
4166 CFGBlock *LoopSuccessor = nullptr; in VisitDoStmt()
4182 CFGBlock *ExitConditionBlock = createBlock(false); in VisitDoStmt()
4183 CFGBlock *EntryConditionBlock = ExitConditionBlock; in VisitDoStmt()
4206 CFGBlock *BodyBlock = nullptr; in VisitDoStmt()
4246 CFGBlock *LoopBackBlock = createBlock(); in VisitDoStmt()
4269 CFGBlock *CFGBuilder::VisitContinueStmt(ContinueStmt *C) { in VisitContinueStmt()
4290 CFGBlock *CFGBuilder::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E, in VisitUnaryExprOrTypeTraitExpr()
4303 CFGBlock *lastBlock = Block; in VisitUnaryExprOrTypeTraitExpr()
4315 CFGBlock *CFGBuilder::VisitStmtExpr(StmtExpr *SE, AddStmtChoice asc) { in VisitStmtExpr()
4323 CFGBlock *CFGBuilder::VisitSwitchStmt(SwitchStmt *Terminator) { in VisitSwitchStmt()
4326 CFGBlock *SwitchSuccessor = nullptr; in VisitSwitchStmt()
4410 CFGBlock *LastBlock = addStmt(Terminator->getCond()); in VisitSwitchStmt()
4468 CFGBlock *CFGBuilder::VisitCaseStmt(CaseStmt *CS) { in VisitCaseStmt()
4471 CFGBlock *TopBlock = nullptr, *LastBlock = nullptr; in VisitCaseStmt()
4478 CFGBlock *currentBlock = createBlock(false); in VisitCaseStmt()
4499 CFGBlock *CaseBlock = Block; in VisitCaseStmt()
4531 CFGBlock *CFGBuilder::VisitDefaultStmt(DefaultStmt *Terminator) { in VisitDefaultStmt()
4562 CFGBlock *CFGBuilder::VisitCXXTryStmt(CXXTryStmt *Terminator) { in VisitCXXTryStmt()
4565 CFGBlock *TrySuccessor = nullptr; in VisitCXXTryStmt()
4574 CFGBlock *PrevTryTerminatedBlock = TryTerminatedBlock; in VisitCXXTryStmt()
4577 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitCXXTryStmt()
4590 CFGBlock *CatchBlock = VisitCXXCatchStmt(CS); in VisitCXXTryStmt()
4616 CFGBlock *CFGBuilder::VisitCXXCatchStmt(CXXCatchStmt *CS) { in VisitCXXCatchStmt()
4635 CFGBlock *CatchBlock = Block; in VisitCXXCatchStmt()
4659 CFGBlock *CFGBuilder::VisitCXXForRangeStmt(CXXForRangeStmt *S) { in VisitCXXForRangeStmt()
4689 CFGBlock *LoopSuccessor = nullptr; in VisitCXXForRangeStmt()
4703 CFGBlock *ConditionBlock = createBlock(false); in VisitCXXForRangeStmt()
4709 CFGBlock *BeginConditionBlock = addStmt(C); in VisitCXXForRangeStmt()
4766 CFGBlock *LoopVarStmtBlock = addStmt(S->getLoopVarStmt()); in VisitCXXForRangeStmt()
4783 CFGBlock *Head = addStmt(S->getRangeStmt()); in VisitCXXForRangeStmt()
4789 CFGBlock *CFGBuilder::VisitExprWithCleanups(ExprWithCleanups *E, in VisitExprWithCleanups()
4804 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E, in VisitCXXBindTemporaryExpr()
4820 CFGBlock *CFGBuilder::VisitCXXConstructExpr(CXXConstructExpr *C, in VisitCXXConstructExpr()
4833 CFGBlock *CFGBuilder::VisitCXXNewExpr(CXXNewExpr *NE, in VisitCXXNewExpr()
4858 CFGBlock *CFGBuilder::VisitCXXDeleteExpr(CXXDeleteExpr *DE, in VisitCXXDeleteExpr()
4875 CFGBlock *CFGBuilder::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E, in VisitCXXFunctionalCastExpr()
4886 CFGBlock *CFGBuilder::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *C, in VisitCXXTemporaryObjectExpr()
4898 CFGBlock *CFGBuilder::VisitImplicitCastExpr(ImplicitCastExpr *E, in VisitImplicitCastExpr()
4911 CFGBlock *CFGBuilder::VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc) { in VisitConstantExpr()
4915 CFGBlock *CFGBuilder::VisitIndirectGotoStmt(IndirectGotoStmt *I) { in VisitIndirectGotoStmt()
4917 CFGBlock *IBlock = cfg->getIndirectGotoBlock(); in VisitIndirectGotoStmt()
4935 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed, in VisitForTemporaryDtors()
5010 CFGBlock *B = Block; in VisitForTemporaryDtors()
5013 if (CFGBlock *R = VisitForTemporaryDtors( in VisitForTemporaryDtors()
5036 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E, in VisitChildrenForTemporaryDtors()
5048 CFGBlock *B = Block; in VisitChildrenForTemporaryDtors()
5051 if (CFGBlock *R = VisitForTemporaryDtors(Child, ExternallyDestructed, Context)) in VisitChildrenForTemporaryDtors()
5057 CFGBlock *CFGBuilder::VisitBinaryOperatorForTemporaryDtors( in VisitBinaryOperatorForTemporaryDtors()
5062 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
5063 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), ExternallyDestructed, Context); in VisitBinaryOperatorForTemporaryDtors()
5087 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
5088 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
5096 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExprForTemporaryDtors( in VisitCXXBindTemporaryExprForTemporaryDtors()
5100 CFGBlock *B = VisitForTemporaryDtors(E->getSubExpr(), true, Context); in VisitCXXBindTemporaryExprForTemporaryDtors()
5133 CFGBlock *FalseSucc) { in InsertTempDtorDecisionBlock()
5139 CFGBlock *Decision = createBlock(false); in InsertTempDtorDecisionBlock()
5148 CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors( in VisitConditionalOperatorForTemporaryDtors()
5152 CFGBlock *ConditionBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
5153 CFGBlock *ConditionSucc = Succ; in VisitConditionalOperatorForTemporaryDtors()
5161 CFGBlock *TrueBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
5180 CFGBlock *CFGBuilder::VisitOMPExecutableDirective(OMPExecutableDirective *D, in VisitOMPExecutableDirective()
5188 CFGBlock *B = Block; in VisitOMPExecutableDirective()
5196 if (CFGBlock *R = Visit(S)) in VisitOMPExecutableDirective()
5204 if (CFGBlock *R = addStmt(S)) in VisitOMPExecutableDirective()
5214 CFGBlock *CFG::createBlock() { in createBlock()
5218 CFGBlock *Mem = getAllocator().Allocate<CFGBlock>(); in createBlock()
5219 new (Mem) CFGBlock(NumBlockIDs++, BlkBVC, this); in createBlock()
5246 llvm::SmallPtrSet<const CFGBlock *, 4> Visited; in isLinear()
5247 const CFGBlock *B = Entry; in isLinear()
5256 const CFGBlock *FirstReachableB = nullptr; in isLinear()
5257 for (const CFGBlock::AdjacentBlock &AB : B->succs()) { in isLinear()
5359 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, bool IsReachable) in AdjacentBlock()
5364 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock) in AdjacentBlock()
5369 void CFGBlock::addSuccessor(AdjacentBlock Succ, in addSuccessor()
5371 if (CFGBlock *B = Succ.getReachableBlock()) in addSuccessor()
5374 if (CFGBlock *UnreachableB = Succ.getPossiblyUnreachableBlock()) in addSuccessor()
5380 bool CFGBlock::FilterEdge(const CFGBlock::FilterOptions &F, in FilterEdge()
5381 const CFGBlock *From, const CFGBlock *To) { in FilterEdge()
5424 for (CFGBlock::const_iterator BI = (*I)->begin(), BEnd = (*I)->end() ; in StmtPrinterHelper()
5907 const CFGBlock &B, in print_block()
5977 for (CFGBlock::const_iterator I = B.begin(), E = B.end() ; in print_block()
6023 for (CFGBlock::const_pred_iterator I = B.pred_begin(), E = B.pred_end(); in print_block()
6028 CFGBlock *B = *I; in print_block()
6060 for (CFGBlock::const_succ_iterator I = B.succ_begin(), E = B.succ_end(); in print_block()
6065 CFGBlock *B = *I; in print_block()
6117 size_t CFGBlock::getIndexInCFG() const { in getIndexInCFG()
6122 void CFGBlock::dump(const CFG* cfg, const LangOptions &LO, in dump()
6127 LLVM_DUMP_METHOD void CFGBlock::dump() const { in dump()
6133 void CFGBlock::print(raw_ostream &OS, const CFG* cfg, in print()
6141 void CFGBlock::printTerminator(raw_ostream &OS, in printTerminator()
6148 void CFGBlock::printTerminatorJson(raw_ostream &Out, const LangOptions &LO, in printTerminatorJson()
6164 static bool isImmediateSinkBlock(const CFGBlock *Blk) { in isImmediateSinkBlock()
6185 bool CFGBlock::isInevitablySinking() const { in isInevitablySinking()
6188 const CFGBlock *StartBlk = this; in isInevitablySinking()
6192 llvm::SmallVector<const CFGBlock *, 32> DFSWorkList; in isInevitablySinking()
6193 llvm::SmallPtrSet<const CFGBlock *, 32> Visited; in isInevitablySinking()
6197 const CFGBlock *Blk = DFSWorkList.back(); in isInevitablySinking()
6209 if (const CFGBlock *SuccBlk = Succ.getReachableBlock()) { in isInevitablySinking()
6223 const Expr *CFGBlock::getLastCondition() const { in getLastCondition()
6251 Stmt *CFGBlock::getTerminatorCondition(bool StripParens) { in getTerminatorCondition()
6335 static std::string getNodeLabel(const CFGBlock *Node, const CFG *Graph) { in getNodeLabel()