Lines Matching refs:CFGBlock

372   CFGBlock *block = nullptr;
376 BlockScopePosPair(CFGBlock *b, LocalScope::const_iterator scopePos) in BlockScopePosPair()
473 CFGBlock *Block = nullptr;
476 CFGBlock *Succ = nullptr;
481 CFGBlock *SwitchTerminatedBlock = nullptr;
482 CFGBlock *DefaultCaseBlock = nullptr;
488 CFGBlock *TryTerminatedBlock = nullptr;
542 CFGBlock *VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc);
543 CFGBlock *VisitAddrLabelExpr(AddrLabelExpr *A, AddStmtChoice asc);
544 CFGBlock *VisitAttributedStmt(AttributedStmt *A, AddStmtChoice asc);
545 CFGBlock *VisitBinaryOperator(BinaryOperator *B, AddStmtChoice asc);
546 CFGBlock *VisitBreakStmt(BreakStmt *B);
547 CFGBlock *VisitCallExpr(CallExpr *C, AddStmtChoice asc);
548 CFGBlock *VisitCaseStmt(CaseStmt *C);
549 CFGBlock *VisitChooseExpr(ChooseExpr *C, AddStmtChoice asc);
550 CFGBlock *VisitCompoundStmt(CompoundStmt *C, bool ExternallyDestructed);
551 CFGBlock *VisitConditionalOperator(AbstractConditionalOperator *C,
553 CFGBlock *VisitContinueStmt(ContinueStmt *C);
554 CFGBlock *VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E,
556 CFGBlock *VisitCXXCatchStmt(CXXCatchStmt *S);
557 CFGBlock *VisitCXXConstructExpr(CXXConstructExpr *C, AddStmtChoice asc);
558 CFGBlock *VisitCXXNewExpr(CXXNewExpr *DE, AddStmtChoice asc);
559 CFGBlock *VisitCXXDeleteExpr(CXXDeleteExpr *DE, AddStmtChoice asc);
560 CFGBlock *VisitCXXForRangeStmt(CXXForRangeStmt *S);
561 CFGBlock *VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E,
563 CFGBlock *VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *C,
565 CFGBlock *VisitCXXThrowExpr(CXXThrowExpr *T);
566 CFGBlock *VisitCXXTryStmt(CXXTryStmt *S);
567 CFGBlock *VisitCXXTypeidExpr(CXXTypeidExpr *S, AddStmtChoice asc);
568 CFGBlock *VisitDeclStmt(DeclStmt *DS);
569 CFGBlock *VisitDeclSubExpr(DeclStmt *DS);
570 CFGBlock *VisitDefaultStmt(DefaultStmt *D);
571 CFGBlock *VisitDoStmt(DoStmt *D);
572 CFGBlock *VisitExprWithCleanups(ExprWithCleanups *E,
574 CFGBlock *VisitForStmt(ForStmt *F);
575 CFGBlock *VisitGotoStmt(GotoStmt *G);
576 CFGBlock *VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc);
577 CFGBlock *VisitIfStmt(IfStmt *I);
578 CFGBlock *VisitImplicitCastExpr(ImplicitCastExpr *E, AddStmtChoice asc);
579 CFGBlock *VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc);
580 CFGBlock *VisitIndirectGotoStmt(IndirectGotoStmt *I);
581 CFGBlock *VisitLabelStmt(LabelStmt *L);
582 CFGBlock *VisitBlockExpr(BlockExpr *E, AddStmtChoice asc);
583 CFGBlock *VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc);
584 CFGBlock *VisitLogicalOperator(BinaryOperator *B);
585 std::pair<CFGBlock *, CFGBlock *> VisitLogicalOperator(BinaryOperator *B,
587 CFGBlock *TrueBlock,
588 CFGBlock *FalseBlock);
589 CFGBlock *VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *MTE,
591 CFGBlock *VisitMemberExpr(MemberExpr *M, AddStmtChoice asc);
592 CFGBlock *VisitObjCAtCatchStmt(ObjCAtCatchStmt *S);
593 CFGBlock *VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S);
594 CFGBlock *VisitObjCAtThrowStmt(ObjCAtThrowStmt *S);
595 CFGBlock *VisitObjCAtTryStmt(ObjCAtTryStmt *S);
596 CFGBlock *VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S);
597 CFGBlock *VisitObjCForCollectionStmt(ObjCForCollectionStmt *S);
598 CFGBlock *VisitObjCMessageExpr(ObjCMessageExpr *E, AddStmtChoice asc);
599 CFGBlock *VisitPseudoObjectExpr(PseudoObjectExpr *E);
600 CFGBlock *VisitReturnStmt(Stmt *S);
601 CFGBlock *VisitCoroutineSuspendExpr(CoroutineSuspendExpr *S,
603 CFGBlock *VisitSEHExceptStmt(SEHExceptStmt *S);
604 CFGBlock *VisitSEHFinallyStmt(SEHFinallyStmt *S);
605 CFGBlock *VisitSEHLeaveStmt(SEHLeaveStmt *S);
606 CFGBlock *VisitSEHTryStmt(SEHTryStmt *S);
607 CFGBlock *VisitStmtExpr(StmtExpr *S, AddStmtChoice asc);
608 CFGBlock *VisitSwitchStmt(SwitchStmt *S);
609 CFGBlock *VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E,
611 CFGBlock *VisitUnaryOperator(UnaryOperator *U, AddStmtChoice asc);
612 CFGBlock *VisitWhileStmt(WhileStmt *W);
613 CFGBlock *VisitArrayInitLoopExpr(ArrayInitLoopExpr *A, AddStmtChoice asc);
615 CFGBlock *Visit(Stmt *S, AddStmtChoice asc = AddStmtChoice::NotAlwaysAdd,
617 CFGBlock *VisitStmt(Stmt *S, AddStmtChoice asc);
618 CFGBlock *VisitChildren(Stmt *S);
619 CFGBlock *VisitNoRecurse(Expr *E, AddStmtChoice asc);
620 CFGBlock *VisitOMPExecutableDirective(OMPExecutableDirective *D,
623 void maybeAddScopeBeginForVarDecl(CFGBlock *B, const VarDecl *VD, in maybeAddScopeBeginForVarDecl()
674 void setDecisionPoint(CFGBlock *S, CXXBindTemporaryExpr *E) { in setDecisionPoint()
681 CFGBlock *Succ = nullptr;
687 CFGBlock *VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
689 CFGBlock *VisitChildrenForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
691 CFGBlock *VisitBinaryOperatorForTemporaryDtors(BinaryOperator *E,
694 CFGBlock *VisitCXXBindTemporaryExprForTemporaryDtors(
696 CFGBlock *VisitConditionalOperatorForTemporaryDtors(
700 CFGBlock *FalseSucc = nullptr);
703 CFGBlock *NYS() { in NYS()
746 CFGBlock *createBlock(bool add_successor = true);
747 CFGBlock *createNoReturnBlock();
749 CFGBlock *addStmt(Stmt *S) { in addStmt()
753 CFGBlock *addInitializer(CXXCtorInitializer *I);
793 void appendStmt(CFGBlock *B, const Stmt *S) { in appendStmt()
802 void appendConstructor(CFGBlock *B, CXXConstructExpr *CE) { in appendConstructor()
813 void appendCall(CFGBlock *B, CallExpr *CE) { in appendCall()
827 void appendInitializer(CFGBlock *B, CXXCtorInitializer *I) { in appendInitializer()
831 void appendNewAllocator(CFGBlock *B, CXXNewExpr *NE) { in appendNewAllocator()
835 void appendBaseDtor(CFGBlock *B, const CXXBaseSpecifier *BS) { in appendBaseDtor()
839 void appendMemberDtor(CFGBlock *B, FieldDecl *FD) { in appendMemberDtor()
843 void appendObjCMessage(CFGBlock *B, ObjCMessageExpr *ME) { in appendObjCMessage()
857 void appendTemporaryDtor(CFGBlock *B, CXXBindTemporaryExpr *E) { in appendTemporaryDtor()
861 void appendAutomaticObjDtor(CFGBlock *B, VarDecl *VD, Stmt *S) { in appendAutomaticObjDtor()
865 void appendLifetimeEnds(CFGBlock *B, VarDecl *VD, Stmt *S) { in appendLifetimeEnds()
869 void appendLoopExit(CFGBlock *B, const Stmt *LoopStmt) { in appendLoopExit()
873 void appendDeleteDtor(CFGBlock *B, CXXRecordDecl *RD, CXXDeleteExpr *DE) { in appendDeleteDtor()
877 void prependAutomaticObjDtorsWithTerminator(CFGBlock *Blk,
880 void prependAutomaticObjLifetimeWithTerminator(CFGBlock *Blk,
885 prependAutomaticObjScopeEndWithTerminator(CFGBlock *Blk,
889 void addSuccessor(CFGBlock *B, CFGBlock *S, bool IsReachable = true) { in addSuccessor()
890 B->addSuccessor(CFGBlock::AdjacentBlock(S, IsReachable), in addSuccessor()
896 void addSuccessor(CFGBlock *B, CFGBlock *ReachableBlock, CFGBlock *AltBlock) { in addSuccessor()
897 B->addSuccessor(CFGBlock::AdjacentBlock(ReachableBlock, AltBlock), in addSuccessor()
901 void appendScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in appendScopeBegin()
906 void prependScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in prependScopeBegin()
911 void appendScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in appendScopeEnd()
916 void prependScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in prependScopeEnd()
1509 CFGBlock *B = addStmt(Statement); in buildCFG()
1527 CFGBlock *VBaseSucc = nullptr; in buildCFG()
1559 CFGBlock *B = I->block; in buildCFG()
1577 CFGBlock *Successor = (I+1)->block; in buildCFG()
1595 if (CFGBlock *B = cfg->getIndirectGotoBlock()) in buildCFG()
1620 CFGBlock *CFGBuilder::createBlock(bool add_successor) { in createBlock()
1621 CFGBlock *B = cfg->createBlock(); in createBlock()
1630 CFGBlock *CFGBuilder::createNoReturnBlock() { in createNoReturnBlock()
1631 CFGBlock *B = createBlock(false); in createNoReturnBlock()
1638 CFGBlock *CFGBuilder::addInitializer(CXXCtorInitializer *I) { in addInitializer()
1683 if (CFGBlock *R = Visit(Child)) in addInitializer()
2066 void CFGBuilder::prependAutomaticObjDtorsWithTerminator(CFGBlock *Blk, in prependAutomaticObjDtorsWithTerminator()
2071 CFGBlock::iterator InsertPos in prependAutomaticObjDtorsWithTerminator()
2084 CFGBlock *Blk, LocalScope::const_iterator B, LocalScope::const_iterator E) { in prependAutomaticObjLifetimeWithTerminator()
2088 CFGBlock::iterator InsertPos = in prependAutomaticObjLifetimeWithTerminator()
2103 CFGBlock *Blk, LocalScope::const_iterator B, LocalScope::const_iterator E) { in prependAutomaticObjScopeEndWithTerminator()
2107 CFGBlock::iterator InsertPos = in prependAutomaticObjScopeEndWithTerminator()
2119 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc, in Visit()
2348 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) { in VisitStmt()
2358 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) { in VisitChildren()
2359 CFGBlock *B = Block; in VisitChildren()
2366 if (CFGBlock *R = Visit(Child)) in VisitChildren()
2372 CFGBlock *CFGBuilder::VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc) { in VisitInitListExpr()
2377 CFGBlock *B = Block; in VisitInitListExpr()
2383 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2388 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2395 CFGBlock *CFGBuilder::VisitAddrLabelExpr(AddrLabelExpr *A, in VisitAddrLabelExpr()
2414 CFGBlock *CFGBuilder::VisitAttributedStmt(AttributedStmt *A, in VisitAttributedStmt()
2432 CFGBlock *CFGBuilder::VisitUnaryOperator(UnaryOperator *U, AddStmtChoice asc) { in VisitUnaryOperator()
2444 CFGBlock *CFGBuilder::VisitLogicalOperator(BinaryOperator *B) { in VisitLogicalOperator()
2445 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitLogicalOperator()
2455 std::pair<CFGBlock*, CFGBlock*>
2458 CFGBlock *TrueBlock, in VisitLogicalOperator()
2459 CFGBlock *FalseBlock) { in VisitLogicalOperator()
2464 CFGBlock *RHSBlock, *ExitBlock; in VisitLogicalOperator()
2523 CFGBlock *LHSBlock = createBlock(false); in VisitLogicalOperator()
2527 CFGBlock *EntryLHSBlock = addStmt(LHS); in VisitLogicalOperator()
2548 CFGBlock *CFGBuilder::VisitBinaryOperator(BinaryOperator *B, in VisitBinaryOperator()
2578 CFGBlock *RBlock = Visit(B->getRHS()); in VisitBinaryOperator()
2579 CFGBlock *LBlock = Visit(B->getLHS()); in VisitBinaryOperator()
2586 CFGBlock *CFGBuilder::VisitNoRecurse(Expr *E, AddStmtChoice asc) { in VisitNoRecurse()
2594 CFGBlock *CFGBuilder::VisitBreakStmt(BreakStmt *B) { in VisitBreakStmt()
2630 CFGBlock *CFGBuilder::VisitCallExpr(CallExpr *C, AddStmtChoice asc) { in VisitCallExpr()
2715 CFGBlock *CFGBuilder::VisitChooseExpr(ChooseExpr *C, in VisitChooseExpr()
2717 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitChooseExpr()
2725 CFGBlock *LHSBlock = Visit(C->getLHS(), alwaysAdd); in VisitChooseExpr()
2731 CFGBlock *RHSBlock = Visit(C->getRHS(), alwaysAdd); in VisitChooseExpr()
2744 CFGBlock *CFGBuilder::VisitCompoundStmt(CompoundStmt *C, in VisitCompoundStmt()
2755 CFGBlock *LastBlock = Block; in VisitCompoundStmt()
2760 CFGBlock *newBlock = Visit(S, AddStmtChoice::AlwaysAdd, in VisitCompoundStmt()
2775 CFGBlock *CFGBuilder::VisitConditionalOperator(AbstractConditionalOperator *C, in VisitConditionalOperator()
2782 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitConditionalOperator()
2795 CFGBlock *LHSBlock = nullptr; in VisitConditionalOperator()
2808 CFGBlock *RHSBlock = Visit(C->getFalseExpr(), alwaysAdd); in VisitConditionalOperator()
2842 CFGBlock *CFGBuilder::VisitDeclStmt(DeclStmt *DS) { in VisitDeclStmt()
2852 CFGBlock *B = nullptr; in VisitDeclStmt()
2875 CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) { in VisitDeclSubExpr()
2887 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2890 if (CFGBlock *NewBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2907 CFGBlock *blockAfterStaticInit = nullptr; in VisitDeclSubExpr()
2963 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2970 if (CFGBlock *newBlock = Visit(EC->getSubExpr())) in VisitDeclSubExpr()
2974 if (CFGBlock *newBlock = Visit(Init)) in VisitDeclSubExpr()
2984 if (CFGBlock *newBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2994 CFGBlock *B = LastBlock; in VisitDeclSubExpr()
3007 CFGBlock *CFGBuilder::VisitIfStmt(IfStmt *I) { in VisitIfStmt()
3039 CFGBlock *ElseBlock = Succ; in VisitIfStmt()
3042 SaveAndRestore<CFGBlock*> sv(Succ); in VisitIfStmt()
3064 CFGBlock *ThenBlock; in VisitIfStmt()
3068 SaveAndRestore<CFGBlock*> sv(Succ); in VisitIfStmt()
3101 CFGBlock *LastBlock; in VisitIfStmt()
3143 CFGBlock *CFGBuilder::VisitReturnStmt(Stmt *S) { in VisitReturnStmt()
3179 if (CFGBlock *R = Visit(CRS->getPromiseCall())) in VisitReturnStmt()
3185 if (CFGBlock *R = Visit(RV)) in VisitReturnStmt()
3191 CFGBlock *CFGBuilder::VisitCoroutineSuspendExpr(CoroutineSuspendExpr *E, in VisitCoroutineSuspendExpr()
3200 CFGBlock *B = Block; in VisitCoroutineSuspendExpr()
3212 CFGBlock *CFGBuilder::VisitSEHExceptStmt(SEHExceptStmt *ES) { in VisitSEHExceptStmt()
3221 CFGBlock *SEHExceptBlock = Block; in VisitSEHExceptStmt()
3240 CFGBlock *CFGBuilder::VisitSEHFinallyStmt(SEHFinallyStmt *FS) { in VisitSEHFinallyStmt()
3244 CFGBlock *CFGBuilder::VisitSEHLeaveStmt(SEHLeaveStmt *LS) { in VisitSEHLeaveStmt()
3265 CFGBlock *CFGBuilder::VisitSEHTryStmt(SEHTryStmt *Terminator) { in VisitSEHTryStmt()
3268 CFGBlock *SEHTrySuccessor = nullptr; in VisitSEHTryStmt()
3280 CFGBlock *PrevSEHTryTerminatedBlock = TryTerminatedBlock; in VisitSEHTryStmt()
3283 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitSEHTryStmt()
3292 CFGBlock *ExceptBlock = VisitSEHExceptStmt(Except); in VisitSEHTryStmt()
3308 SaveAndRestore<CFGBlock *> SaveTry(TryTerminatedBlock, NewTryTerminatedBlock); in VisitSEHTryStmt()
3322 CFGBlock *CFGBuilder::VisitLabelStmt(LabelStmt *L) { in VisitLabelStmt()
3325 CFGBlock *LabelBlock = Block; in VisitLabelStmt()
3351 CFGBlock *CFGBuilder::VisitBlockExpr(BlockExpr *E, AddStmtChoice asc) { in VisitBlockExpr()
3352 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitBlockExpr()
3355 CFGBlock *Tmp = Visit(CopyExpr); in VisitBlockExpr()
3363 CFGBlock *CFGBuilder::VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc) { in VisitLambdaExpr()
3364 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitLambdaExpr()
3379 CFGBlock *Tmp = Visit(Init); in VisitLambdaExpr()
3387 CFGBlock *CFGBuilder::VisitGotoStmt(GotoStmt *G) { in VisitGotoStmt()
3409 CFGBlock *CFGBuilder::VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc) { in VisitGCCAsmStmt()
3431 CFGBlock *CFGBuilder::VisitForStmt(ForStmt *F) { in VisitForStmt()
3432 CFGBlock *LoopSuccessor = nullptr; in VisitForStmt()
3467 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitForStmt()
3474 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitForStmt()
3526 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitForStmt()
3609 CFGBlock *
3619 CFGBlock *CFGBuilder::VisitMemberExpr(MemberExpr *M, AddStmtChoice asc) { in VisitMemberExpr()
3627 CFGBlock *CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) { in VisitObjCForCollectionStmt()
3659 CFGBlock *LoopSuccessor = nullptr; in VisitObjCForCollectionStmt()
3670 CFGBlock *ExitConditionBlock = createBlock(false); in VisitObjCForCollectionStmt()
3684 CFGBlock *EntryConditionBlock = Visit(S->getElement(), in VisitObjCForCollectionStmt()
3699 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitObjCForCollectionStmt()
3706 CFGBlock *LoopBackBlock = nullptr; in VisitObjCForCollectionStmt()
3713 CFGBlock *BodyBlock = addStmt(S->getBody()); in VisitObjCForCollectionStmt()
3735 CFGBlock *CFGBuilder::VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S) { in VisitObjCAutoreleasePoolStmt()
3741 CFGBlock *CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S) { in VisitObjCAtSynchronizedStmt()
3745 CFGBlock *SyncBlock = addStmt(S->getSynchBody()); in VisitObjCAtSynchronizedStmt()
3765 CFGBlock *CFGBuilder::VisitPseudoObjectExpr(PseudoObjectExpr *E) { in VisitPseudoObjectExpr()
3771 CFGBlock *lastBlock = Block; in VisitPseudoObjectExpr()
3783 if (CFGBlock *B = Visit(Semantic)) in VisitPseudoObjectExpr()
3790 CFGBlock *CFGBuilder::VisitWhileStmt(WhileStmt *W) { in VisitWhileStmt()
3791 CFGBlock *LoopSuccessor = nullptr; in VisitWhileStmt()
3817 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitWhileStmt()
3824 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitWhileStmt()
3857 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitWhileStmt()
3925 CFGBlock *CFGBuilder::VisitArrayInitLoopExpr(ArrayInitLoopExpr *A, in VisitArrayInitLoopExpr()
3932 CFGBlock *B = Block; in VisitArrayInitLoopExpr()
3934 if (CFGBlock *R = Visit(A->getSubExpr())) in VisitArrayInitLoopExpr()
3940 if (CFGBlock *R = Visit(OVE->getSourceExpr())) in VisitArrayInitLoopExpr()
3946 CFGBlock *CFGBuilder::VisitObjCAtCatchStmt(ObjCAtCatchStmt *CS) { in VisitObjCAtCatchStmt()
3957 CFGBlock *CatchBlock = Block; in VisitObjCAtCatchStmt()
3976 CFGBlock *CFGBuilder::VisitObjCAtThrowStmt(ObjCAtThrowStmt *S) { in VisitObjCAtThrowStmt()
3996 CFGBlock *CFGBuilder::VisitObjCAtTryStmt(ObjCAtTryStmt *Terminator) { in VisitObjCAtTryStmt()
3999 CFGBlock *TrySuccessor = nullptr; in VisitObjCAtTryStmt()
4012 CFGBlock *PrevTryTerminatedBlock = TryTerminatedBlock; in VisitObjCAtTryStmt()
4015 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitObjCAtTryStmt()
4027 CFGBlock *CatchBlock = VisitObjCAtCatchStmt(CS); in VisitObjCAtTryStmt()
4047 SaveAndRestore<CFGBlock *> SaveTry(TryTerminatedBlock, NewTryTerminatedBlock); in VisitObjCAtTryStmt()
4055 CFGBlock *CFGBuilder::VisitObjCMessageExpr(ObjCMessageExpr *ME, in VisitObjCMessageExpr()
4065 CFGBlock *CFGBuilder::VisitCXXThrowExpr(CXXThrowExpr *T) { in VisitCXXThrowExpr()
4085 CFGBlock *CFGBuilder::VisitCXXTypeidExpr(CXXTypeidExpr *S, AddStmtChoice asc) { in VisitCXXTypeidExpr()
4104 CFGBlock *CFGBuilder::VisitDoStmt(DoStmt *D) { in VisitDoStmt()
4105 CFGBlock *LoopSuccessor = nullptr; in VisitDoStmt()
4121 CFGBlock *ExitConditionBlock = createBlock(false); in VisitDoStmt()
4122 CFGBlock *EntryConditionBlock = ExitConditionBlock; in VisitDoStmt()
4145 CFGBlock *BodyBlock = nullptr; in VisitDoStmt()
4150 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitDoStmt()
4185 CFGBlock *LoopBackBlock = createBlock(); in VisitDoStmt()
4208 CFGBlock *CFGBuilder::VisitContinueStmt(ContinueStmt *C) { in VisitContinueStmt()
4229 CFGBlock *CFGBuilder::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E, in VisitUnaryExprOrTypeTraitExpr()
4242 CFGBlock *lastBlock = Block; in VisitUnaryExprOrTypeTraitExpr()
4254 CFGBlock *CFGBuilder::VisitStmtExpr(StmtExpr *SE, AddStmtChoice asc) { in VisitStmtExpr()
4262 CFGBlock *CFGBuilder::VisitSwitchStmt(SwitchStmt *Terminator) { in VisitSwitchStmt()
4265 CFGBlock *SwitchSuccessor = nullptr; in VisitSwitchStmt()
4289 SaveAndRestore<CFGBlock*> save_switch(SwitchTerminatedBlock), in VisitSwitchStmt()
4351 CFGBlock *LastBlock = addStmt(Terminator->getCond()); in VisitSwitchStmt()
4409 CFGBlock *CFGBuilder::VisitCaseStmt(CaseStmt *CS) { in VisitCaseStmt()
4412 CFGBlock *TopBlock = nullptr, *LastBlock = nullptr; in VisitCaseStmt()
4419 CFGBlock *currentBlock = createBlock(false); in VisitCaseStmt()
4440 CFGBlock *CaseBlock = Block; in VisitCaseStmt()
4472 CFGBlock *CFGBuilder::VisitDefaultStmt(DefaultStmt *Terminator) { in VisitDefaultStmt()
4503 CFGBlock *CFGBuilder::VisitCXXTryStmt(CXXTryStmt *Terminator) { in VisitCXXTryStmt()
4506 CFGBlock *TrySuccessor = nullptr; in VisitCXXTryStmt()
4515 CFGBlock *PrevTryTerminatedBlock = TryTerminatedBlock; in VisitCXXTryStmt()
4518 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitCXXTryStmt()
4531 CFGBlock *CatchBlock = VisitCXXCatchStmt(CS); in VisitCXXTryStmt()
4549 SaveAndRestore<CFGBlock *> SaveTry(TryTerminatedBlock, NewTryTerminatedBlock); in VisitCXXTryStmt()
4557 CFGBlock *CFGBuilder::VisitCXXCatchStmt(CXXCatchStmt *CS) { in VisitCXXCatchStmt()
4576 CFGBlock *CatchBlock = Block; in VisitCXXCatchStmt()
4600 CFGBlock *CFGBuilder::VisitCXXForRangeStmt(CXXForRangeStmt *S) { in VisitCXXForRangeStmt()
4630 CFGBlock *LoopSuccessor = nullptr; in VisitCXXForRangeStmt()
4644 CFGBlock *ConditionBlock = createBlock(false); in VisitCXXForRangeStmt()
4650 CFGBlock *BeginConditionBlock = addStmt(C); in VisitCXXForRangeStmt()
4673 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitCXXForRangeStmt()
4707 CFGBlock *LoopVarStmtBlock = addStmt(S->getLoopVarStmt()); in VisitCXXForRangeStmt()
4724 CFGBlock *Head = addStmt(S->getRangeStmt()); in VisitCXXForRangeStmt()
4730 CFGBlock *CFGBuilder::VisitExprWithCleanups(ExprWithCleanups *E, in VisitExprWithCleanups()
4745 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E, in VisitCXXBindTemporaryExpr()
4761 CFGBlock *CFGBuilder::VisitCXXConstructExpr(CXXConstructExpr *C, in VisitCXXConstructExpr()
4774 CFGBlock *CFGBuilder::VisitCXXNewExpr(CXXNewExpr *NE, in VisitCXXNewExpr()
4799 CFGBlock *CFGBuilder::VisitCXXDeleteExpr(CXXDeleteExpr *DE, in VisitCXXDeleteExpr()
4816 CFGBlock *CFGBuilder::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E, in VisitCXXFunctionalCastExpr()
4827 CFGBlock *CFGBuilder::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *C, in VisitCXXTemporaryObjectExpr()
4839 CFGBlock *CFGBuilder::VisitImplicitCastExpr(ImplicitCastExpr *E, in VisitImplicitCastExpr()
4852 CFGBlock *CFGBuilder::VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc) { in VisitConstantExpr()
4856 CFGBlock *CFGBuilder::VisitIndirectGotoStmt(IndirectGotoStmt *I) { in VisitIndirectGotoStmt()
4858 CFGBlock *IBlock = cfg->getIndirectGotoBlock(); in VisitIndirectGotoStmt()
4876 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed, in VisitForTemporaryDtors()
4951 CFGBlock *B = Block; in VisitForTemporaryDtors()
4954 if (CFGBlock *R = VisitForTemporaryDtors( in VisitForTemporaryDtors()
4977 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E, in VisitChildrenForTemporaryDtors()
4989 CFGBlock *B = Block; in VisitChildrenForTemporaryDtors()
4992 if (CFGBlock *R = VisitForTemporaryDtors(Child, ExternallyDestructed, Context)) in VisitChildrenForTemporaryDtors()
4998 CFGBlock *CFGBuilder::VisitBinaryOperatorForTemporaryDtors( in VisitBinaryOperatorForTemporaryDtors()
5003 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
5004 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), ExternallyDestructed, Context); in VisitBinaryOperatorForTemporaryDtors()
5028 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
5029 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
5037 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExprForTemporaryDtors( in VisitCXXBindTemporaryExprForTemporaryDtors()
5041 CFGBlock *B = VisitForTemporaryDtors(E->getSubExpr(), true, Context); in VisitCXXBindTemporaryExprForTemporaryDtors()
5074 CFGBlock *FalseSucc) { in InsertTempDtorDecisionBlock()
5080 CFGBlock *Decision = createBlock(false); in InsertTempDtorDecisionBlock()
5089 CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors( in VisitConditionalOperatorForTemporaryDtors()
5093 CFGBlock *ConditionBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
5094 CFGBlock *ConditionSucc = Succ; in VisitConditionalOperatorForTemporaryDtors()
5102 CFGBlock *TrueBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
5121 CFGBlock *CFGBuilder::VisitOMPExecutableDirective(OMPExecutableDirective *D, in VisitOMPExecutableDirective()
5129 CFGBlock *B = Block; in VisitOMPExecutableDirective()
5137 if (CFGBlock *R = Visit(S)) in VisitOMPExecutableDirective()
5145 if (CFGBlock *R = addStmt(S)) in VisitOMPExecutableDirective()
5155 CFGBlock *CFG::createBlock() { in createBlock()
5159 CFGBlock *Mem = getAllocator().Allocate<CFGBlock>(); in createBlock()
5160 new (Mem) CFGBlock(NumBlockIDs++, BlkBVC, this); in createBlock()
5187 llvm::SmallPtrSet<const CFGBlock *, 4> Visited; in isLinear()
5188 const CFGBlock *B = Entry; in isLinear()
5197 const CFGBlock *FirstReachableB = nullptr; in isLinear()
5198 for (const CFGBlock::AdjacentBlock &AB : B->succs()) { in isLinear()
5289 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, bool IsReachable) in AdjacentBlock()
5294 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock) in AdjacentBlock()
5299 void CFGBlock::addSuccessor(AdjacentBlock Succ, in addSuccessor()
5301 if (CFGBlock *B = Succ.getReachableBlock()) in addSuccessor()
5304 if (CFGBlock *UnreachableB = Succ.getPossiblyUnreachableBlock()) in addSuccessor()
5310 bool CFGBlock::FilterEdge(const CFGBlock::FilterOptions &F, in FilterEdge()
5311 const CFGBlock *From, const CFGBlock *To) { in FilterEdge()
5354 for (CFGBlock::const_iterator BI = (*I)->begin(), BEnd = (*I)->end() ; in StmtPrinterHelper()
5837 const CFGBlock &B, in print_block()
5907 for (CFGBlock::const_iterator I = B.begin(), E = B.end() ; in print_block()
5953 for (CFGBlock::const_pred_iterator I = B.pred_begin(), E = B.pred_end(); in print_block()
5958 CFGBlock *B = *I; in print_block()
5990 for (CFGBlock::const_succ_iterator I = B.succ_begin(), E = B.succ_end(); in print_block()
5995 CFGBlock *B = *I; in print_block()
6047 size_t CFGBlock::getIndexInCFG() const { in getIndexInCFG()
6052 void CFGBlock::dump(const CFG* cfg, const LangOptions &LO, in dump()
6057 LLVM_DUMP_METHOD void CFGBlock::dump() const { in dump()
6063 void CFGBlock::print(raw_ostream &OS, const CFG* cfg, in print()
6071 void CFGBlock::printTerminator(raw_ostream &OS, in printTerminator()
6078 void CFGBlock::printTerminatorJson(raw_ostream &Out, const LangOptions &LO, in printTerminatorJson()
6094 static bool isImmediateSinkBlock(const CFGBlock *Blk) { in isImmediateSinkBlock()
6115 bool CFGBlock::isInevitablySinking() const { in isInevitablySinking()
6118 const CFGBlock *StartBlk = this; in isInevitablySinking()
6122 llvm::SmallVector<const CFGBlock *, 32> DFSWorkList; in isInevitablySinking()
6123 llvm::SmallPtrSet<const CFGBlock *, 32> Visited; in isInevitablySinking()
6127 const CFGBlock *Blk = DFSWorkList.back(); in isInevitablySinking()
6139 if (const CFGBlock *SuccBlk = Succ.getReachableBlock()) { in isInevitablySinking()
6153 const Expr *CFGBlock::getLastCondition() const { in getLastCondition()
6181 Stmt *CFGBlock::getTerminatorCondition(bool StripParens) { in getTerminatorCondition()
6265 static std::string getNodeLabel(const CFGBlock *Node, const CFG *Graph) { in getNodeLabel()