Lines Matching refs:CFGBlock
372 CFGBlock *block = nullptr;
376 BlockScopePosPair(CFGBlock *b, LocalScope::const_iterator scopePos) in BlockScopePosPair()
474 CFGBlock *Block = nullptr;
477 CFGBlock *Succ = nullptr;
482 CFGBlock *SwitchTerminatedBlock = nullptr;
483 CFGBlock *DefaultCaseBlock = nullptr;
487 CFGBlock *TryTerminatedBlock = nullptr;
543 CFGBlock *VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc);
544 CFGBlock *VisitAddrLabelExpr(AddrLabelExpr *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 *VisitDeclStmt(DeclStmt *DS);
568 CFGBlock *VisitDeclSubExpr(DeclStmt *DS);
569 CFGBlock *VisitDefaultStmt(DefaultStmt *D);
570 CFGBlock *VisitDoStmt(DoStmt *D);
571 CFGBlock *VisitExprWithCleanups(ExprWithCleanups *E,
573 CFGBlock *VisitForStmt(ForStmt *F);
574 CFGBlock *VisitGotoStmt(GotoStmt *G);
575 CFGBlock *VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc);
576 CFGBlock *VisitIfStmt(IfStmt *I);
577 CFGBlock *VisitImplicitCastExpr(ImplicitCastExpr *E, AddStmtChoice asc);
578 CFGBlock *VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc);
579 CFGBlock *VisitIndirectGotoStmt(IndirectGotoStmt *I);
580 CFGBlock *VisitLabelStmt(LabelStmt *L);
581 CFGBlock *VisitBlockExpr(BlockExpr *E, AddStmtChoice asc);
582 CFGBlock *VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc);
583 CFGBlock *VisitLogicalOperator(BinaryOperator *B);
584 std::pair<CFGBlock *, CFGBlock *> VisitLogicalOperator(BinaryOperator *B,
586 CFGBlock *TrueBlock,
587 CFGBlock *FalseBlock);
588 CFGBlock *VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *MTE,
590 CFGBlock *VisitMemberExpr(MemberExpr *M, AddStmtChoice asc);
591 CFGBlock *VisitObjCAtCatchStmt(ObjCAtCatchStmt *S);
592 CFGBlock *VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S);
593 CFGBlock *VisitObjCAtThrowStmt(ObjCAtThrowStmt *S);
594 CFGBlock *VisitObjCAtTryStmt(ObjCAtTryStmt *S);
595 CFGBlock *VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S);
596 CFGBlock *VisitObjCForCollectionStmt(ObjCForCollectionStmt *S);
597 CFGBlock *VisitObjCMessageExpr(ObjCMessageExpr *E, AddStmtChoice asc);
598 CFGBlock *VisitPseudoObjectExpr(PseudoObjectExpr *E);
599 CFGBlock *VisitReturnStmt(Stmt *S);
600 CFGBlock *VisitSEHExceptStmt(SEHExceptStmt *S);
601 CFGBlock *VisitSEHFinallyStmt(SEHFinallyStmt *S);
602 CFGBlock *VisitSEHLeaveStmt(SEHLeaveStmt *S);
603 CFGBlock *VisitSEHTryStmt(SEHTryStmt *S);
604 CFGBlock *VisitStmtExpr(StmtExpr *S, AddStmtChoice asc);
605 CFGBlock *VisitSwitchStmt(SwitchStmt *S);
606 CFGBlock *VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E,
608 CFGBlock *VisitUnaryOperator(UnaryOperator *U, AddStmtChoice asc);
609 CFGBlock *VisitWhileStmt(WhileStmt *W);
611 CFGBlock *Visit(Stmt *S, AddStmtChoice asc = AddStmtChoice::NotAlwaysAdd,
613 CFGBlock *VisitStmt(Stmt *S, AddStmtChoice asc);
614 CFGBlock *VisitChildren(Stmt *S);
615 CFGBlock *VisitNoRecurse(Expr *E, AddStmtChoice asc);
616 CFGBlock *VisitOMPExecutableDirective(OMPExecutableDirective *D,
619 void maybeAddScopeBeginForVarDecl(CFGBlock *B, const VarDecl *VD, in maybeAddScopeBeginForVarDecl()
670 void setDecisionPoint(CFGBlock *S, CXXBindTemporaryExpr *E) { in setDecisionPoint()
677 CFGBlock *Succ = nullptr;
683 CFGBlock *VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
685 CFGBlock *VisitChildrenForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
687 CFGBlock *VisitBinaryOperatorForTemporaryDtors(BinaryOperator *E,
690 CFGBlock *VisitCXXBindTemporaryExprForTemporaryDtors(
692 CFGBlock *VisitConditionalOperatorForTemporaryDtors(
696 CFGBlock *FalseSucc = nullptr);
699 CFGBlock *NYS() { in NYS()
742 CFGBlock *createBlock(bool add_successor = true);
743 CFGBlock *createNoReturnBlock();
745 CFGBlock *addStmt(Stmt *S) { in addStmt()
749 CFGBlock *addInitializer(CXXCtorInitializer *I);
789 void appendStmt(CFGBlock *B, const Stmt *S) { in appendStmt()
798 void appendConstructor(CFGBlock *B, CXXConstructExpr *CE) { in appendConstructor()
809 void appendCall(CFGBlock *B, CallExpr *CE) { in appendCall()
823 void appendInitializer(CFGBlock *B, CXXCtorInitializer *I) { in appendInitializer()
827 void appendNewAllocator(CFGBlock *B, CXXNewExpr *NE) { in appendNewAllocator()
831 void appendBaseDtor(CFGBlock *B, const CXXBaseSpecifier *BS) { in appendBaseDtor()
835 void appendMemberDtor(CFGBlock *B, FieldDecl *FD) { in appendMemberDtor()
839 void appendObjCMessage(CFGBlock *B, ObjCMessageExpr *ME) { in appendObjCMessage()
853 void appendTemporaryDtor(CFGBlock *B, CXXBindTemporaryExpr *E) { in appendTemporaryDtor()
857 void appendAutomaticObjDtor(CFGBlock *B, VarDecl *VD, Stmt *S) { in appendAutomaticObjDtor()
861 void appendLifetimeEnds(CFGBlock *B, VarDecl *VD, Stmt *S) { in appendLifetimeEnds()
865 void appendLoopExit(CFGBlock *B, const Stmt *LoopStmt) { in appendLoopExit()
869 void appendDeleteDtor(CFGBlock *B, CXXRecordDecl *RD, CXXDeleteExpr *DE) { in appendDeleteDtor()
873 void prependAutomaticObjDtorsWithTerminator(CFGBlock *Blk,
876 void prependAutomaticObjLifetimeWithTerminator(CFGBlock *Blk,
881 prependAutomaticObjScopeEndWithTerminator(CFGBlock *Blk,
885 void addSuccessor(CFGBlock *B, CFGBlock *S, bool IsReachable = true) { in addSuccessor()
886 B->addSuccessor(CFGBlock::AdjacentBlock(S, IsReachable), in addSuccessor()
892 void addSuccessor(CFGBlock *B, CFGBlock *ReachableBlock, CFGBlock *AltBlock) { in addSuccessor()
893 B->addSuccessor(CFGBlock::AdjacentBlock(ReachableBlock, AltBlock), in addSuccessor()
897 void appendScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in appendScopeBegin()
902 void prependScopeBegin(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in prependScopeBegin()
907 void appendScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in appendScopeEnd()
912 void prependScopeEnd(CFGBlock *B, const VarDecl *VD, const Stmt *S) { in prependScopeEnd()
1498 CFGBlock *B = addStmt(Statement); in buildCFG()
1516 CFGBlock *VBaseSucc = nullptr; in buildCFG()
1548 CFGBlock *B = I->block; in buildCFG()
1566 CFGBlock *Successor = (I+1)->block; in buildCFG()
1584 if (CFGBlock *B = cfg->getIndirectGotoBlock()) in buildCFG()
1609 CFGBlock *CFGBuilder::createBlock(bool add_successor) { in createBlock()
1610 CFGBlock *B = cfg->createBlock(); in createBlock()
1619 CFGBlock *CFGBuilder::createNoReturnBlock() { in createNoReturnBlock()
1620 CFGBlock *B = createBlock(false); in createNoReturnBlock()
1627 CFGBlock *CFGBuilder::addInitializer(CXXCtorInitializer *I) { in addInitializer()
1668 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()
2335 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) { in VisitStmt()
2345 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) { in VisitChildren()
2346 CFGBlock *B = Block; in VisitChildren()
2353 if (CFGBlock *R = Visit(Child)) in VisitChildren()
2359 CFGBlock *CFGBuilder::VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc) { in VisitInitListExpr()
2364 CFGBlock *B = Block; in VisitInitListExpr()
2370 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2375 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2382 CFGBlock *CFGBuilder::VisitAddrLabelExpr(AddrLabelExpr *A, in VisitAddrLabelExpr()
2394 CFGBlock *CFGBuilder::VisitUnaryOperator(UnaryOperator *U, in VisitUnaryOperator()
2407 CFGBlock *CFGBuilder::VisitLogicalOperator(BinaryOperator *B) { in VisitLogicalOperator()
2408 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitLogicalOperator()
2418 std::pair<CFGBlock*, CFGBlock*>
2421 CFGBlock *TrueBlock, in VisitLogicalOperator()
2422 CFGBlock *FalseBlock) { in VisitLogicalOperator()
2427 CFGBlock *RHSBlock, *ExitBlock; in VisitLogicalOperator()
2486 CFGBlock *LHSBlock = createBlock(false); in VisitLogicalOperator()
2490 CFGBlock *EntryLHSBlock = addStmt(LHS); in VisitLogicalOperator()
2511 CFGBlock *CFGBuilder::VisitBinaryOperator(BinaryOperator *B, in VisitBinaryOperator()
2541 CFGBlock *RBlock = Visit(B->getRHS()); in VisitBinaryOperator()
2542 CFGBlock *LBlock = Visit(B->getLHS()); in VisitBinaryOperator()
2549 CFGBlock *CFGBuilder::VisitNoRecurse(Expr *E, AddStmtChoice asc) { in VisitNoRecurse()
2557 CFGBlock *CFGBuilder::VisitBreakStmt(BreakStmt *B) { in VisitBreakStmt()
2593 CFGBlock *CFGBuilder::VisitCallExpr(CallExpr *C, AddStmtChoice asc) { in VisitCallExpr()
2678 CFGBlock *CFGBuilder::VisitChooseExpr(ChooseExpr *C, in VisitChooseExpr()
2680 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitChooseExpr()
2688 CFGBlock *LHSBlock = Visit(C->getLHS(), alwaysAdd); in VisitChooseExpr()
2694 CFGBlock *RHSBlock = Visit(C->getRHS(), alwaysAdd); in VisitChooseExpr()
2707 CFGBlock *CFGBuilder::VisitCompoundStmt(CompoundStmt *C, bool ExternallyDestructed) { in VisitCompoundStmt()
2717 CFGBlock *LastBlock = Block; in VisitCompoundStmt()
2723 CFGBlock *newBlock = Visit(*I, AddStmtChoice::AlwaysAdd, in VisitCompoundStmt()
2738 CFGBlock *CFGBuilder::VisitConditionalOperator(AbstractConditionalOperator *C, in VisitConditionalOperator()
2745 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitConditionalOperator()
2758 CFGBlock *LHSBlock = nullptr; in VisitConditionalOperator()
2771 CFGBlock *RHSBlock = Visit(C->getFalseExpr(), alwaysAdd); in VisitConditionalOperator()
2805 CFGBlock *CFGBuilder::VisitDeclStmt(DeclStmt *DS) { in VisitDeclStmt()
2815 CFGBlock *B = nullptr; in VisitDeclStmt()
2838 CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) { in VisitDeclSubExpr()
2850 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2853 if (CFGBlock *NewBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2870 CFGBlock *blockAfterStaticInit = nullptr; in VisitDeclSubExpr()
2908 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2915 if (CFGBlock *newBlock = Visit(EC->getSubExpr())) in VisitDeclSubExpr()
2919 if (CFGBlock *newBlock = Visit(Init)) in VisitDeclSubExpr()
2929 if (CFGBlock *newBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2939 CFGBlock *B = LastBlock; in VisitDeclSubExpr()
2952 CFGBlock *CFGBuilder::VisitIfStmt(IfStmt *I) { in VisitIfStmt()
2984 CFGBlock *ElseBlock = Succ; in VisitIfStmt()
2987 SaveAndRestore<CFGBlock*> sv(Succ); in VisitIfStmt()
3009 CFGBlock *ThenBlock; in VisitIfStmt()
3013 SaveAndRestore<CFGBlock*> sv(Succ); in VisitIfStmt()
3046 CFGBlock *LastBlock; in VisitIfStmt()
3086 CFGBlock *CFGBuilder::VisitReturnStmt(Stmt *S) { in VisitReturnStmt()
3123 CFGBlock *CFGBuilder::VisitSEHExceptStmt(SEHExceptStmt *ES) { in VisitSEHExceptStmt()
3132 CFGBlock *SEHExceptBlock = Block; in VisitSEHExceptStmt()
3151 CFGBlock *CFGBuilder::VisitSEHFinallyStmt(SEHFinallyStmt *FS) { in VisitSEHFinallyStmt()
3155 CFGBlock *CFGBuilder::VisitSEHLeaveStmt(SEHLeaveStmt *LS) { in VisitSEHLeaveStmt()
3176 CFGBlock *CFGBuilder::VisitSEHTryStmt(SEHTryStmt *Terminator) { in VisitSEHTryStmt()
3179 CFGBlock *SEHTrySuccessor = nullptr; in VisitSEHTryStmt()
3191 CFGBlock *PrevSEHTryTerminatedBlock = TryTerminatedBlock; in VisitSEHTryStmt()
3194 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitSEHTryStmt()
3203 CFGBlock *ExceptBlock = VisitSEHExceptStmt(Except); in VisitSEHTryStmt()
3219 SaveAndRestore<CFGBlock *> save_try(TryTerminatedBlock, in VisitSEHTryStmt()
3234 CFGBlock *CFGBuilder::VisitLabelStmt(LabelStmt *L) { in VisitLabelStmt()
3237 CFGBlock *LabelBlock = Block; in VisitLabelStmt()
3263 CFGBlock *CFGBuilder::VisitBlockExpr(BlockExpr *E, AddStmtChoice asc) { in VisitBlockExpr()
3264 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitBlockExpr()
3267 CFGBlock *Tmp = Visit(CopyExpr); in VisitBlockExpr()
3275 CFGBlock *CFGBuilder::VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc) { in VisitLambdaExpr()
3276 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitLambdaExpr()
3280 CFGBlock *Tmp = Visit(Init); in VisitLambdaExpr()
3288 CFGBlock *CFGBuilder::VisitGotoStmt(GotoStmt *G) { in VisitGotoStmt()
3310 CFGBlock *CFGBuilder::VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc) { in VisitGCCAsmStmt()
3332 CFGBlock *CFGBuilder::VisitForStmt(ForStmt *F) { in VisitForStmt()
3333 CFGBlock *LoopSuccessor = nullptr; in VisitForStmt()
3368 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitForStmt()
3375 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitForStmt()
3427 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitForStmt()
3510 CFGBlock *
3520 CFGBlock *CFGBuilder::VisitMemberExpr(MemberExpr *M, AddStmtChoice asc) { in VisitMemberExpr()
3528 CFGBlock *CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) { in VisitObjCForCollectionStmt()
3560 CFGBlock *LoopSuccessor = nullptr; in VisitObjCForCollectionStmt()
3571 CFGBlock *ExitConditionBlock = createBlock(false); in VisitObjCForCollectionStmt()
3585 CFGBlock *EntryConditionBlock = Visit(S->getElement(), in VisitObjCForCollectionStmt()
3600 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitObjCForCollectionStmt()
3607 CFGBlock *LoopBackBlock = nullptr; in VisitObjCForCollectionStmt()
3614 CFGBlock *BodyBlock = addStmt(S->getBody()); in VisitObjCForCollectionStmt()
3636 CFGBlock *CFGBuilder::VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S) { in VisitObjCAutoreleasePoolStmt()
3642 CFGBlock *CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S) { in VisitObjCAtSynchronizedStmt()
3646 CFGBlock *SyncBlock = addStmt(S->getSynchBody()); in VisitObjCAtSynchronizedStmt()
3666 CFGBlock *CFGBuilder::VisitObjCAtTryStmt(ObjCAtTryStmt *S) { in VisitObjCAtTryStmt()
3671 CFGBlock *CFGBuilder::VisitPseudoObjectExpr(PseudoObjectExpr *E) { in VisitPseudoObjectExpr()
3677 CFGBlock *lastBlock = Block; in VisitPseudoObjectExpr()
3689 if (CFGBlock *B = Visit(Semantic)) in VisitPseudoObjectExpr()
3696 CFGBlock *CFGBuilder::VisitWhileStmt(WhileStmt *W) { in VisitWhileStmt()
3697 CFGBlock *LoopSuccessor = nullptr; in VisitWhileStmt()
3723 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitWhileStmt()
3730 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitWhileStmt()
3763 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitWhileStmt()
3831 CFGBlock *CFGBuilder::VisitObjCAtCatchStmt(ObjCAtCatchStmt *S) { in VisitObjCAtCatchStmt()
3837 CFGBlock *CFGBuilder::VisitObjCAtThrowStmt(ObjCAtThrowStmt *S) { in VisitObjCAtThrowStmt()
3856 CFGBlock *CFGBuilder::VisitObjCMessageExpr(ObjCMessageExpr *ME, in VisitObjCMessageExpr()
3866 CFGBlock *CFGBuilder::VisitCXXThrowExpr(CXXThrowExpr *T) { in VisitCXXThrowExpr()
3886 CFGBlock *CFGBuilder::VisitDoStmt(DoStmt *D) { in VisitDoStmt()
3887 CFGBlock *LoopSuccessor = nullptr; in VisitDoStmt()
3903 CFGBlock *ExitConditionBlock = createBlock(false); in VisitDoStmt()
3904 CFGBlock *EntryConditionBlock = ExitConditionBlock; in VisitDoStmt()
3927 CFGBlock *BodyBlock = nullptr; in VisitDoStmt()
3932 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitDoStmt()
3967 CFGBlock *LoopBackBlock = createBlock(); in VisitDoStmt()
3990 CFGBlock *CFGBuilder::VisitContinueStmt(ContinueStmt *C) { in VisitContinueStmt()
4011 CFGBlock *CFGBuilder::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E, in VisitUnaryExprOrTypeTraitExpr()
4024 CFGBlock *lastBlock = Block; in VisitUnaryExprOrTypeTraitExpr()
4036 CFGBlock *CFGBuilder::VisitStmtExpr(StmtExpr *SE, AddStmtChoice asc) { in VisitStmtExpr()
4044 CFGBlock *CFGBuilder::VisitSwitchStmt(SwitchStmt *Terminator) { in VisitSwitchStmt()
4047 CFGBlock *SwitchSuccessor = nullptr; in VisitSwitchStmt()
4071 SaveAndRestore<CFGBlock*> save_switch(SwitchTerminatedBlock), in VisitSwitchStmt()
4133 CFGBlock *LastBlock = addStmt(Terminator->getCond()); in VisitSwitchStmt()
4191 CFGBlock *CFGBuilder::VisitCaseStmt(CaseStmt *CS) { in VisitCaseStmt()
4194 CFGBlock *TopBlock = nullptr, *LastBlock = nullptr; in VisitCaseStmt()
4201 CFGBlock *currentBlock = createBlock(false); in VisitCaseStmt()
4222 CFGBlock *CaseBlock = Block; in VisitCaseStmt()
4254 CFGBlock *CFGBuilder::VisitDefaultStmt(DefaultStmt *Terminator) { in VisitDefaultStmt()
4285 CFGBlock *CFGBuilder::VisitCXXTryStmt(CXXTryStmt *Terminator) { in VisitCXXTryStmt()
4288 CFGBlock *TrySuccessor = nullptr; in VisitCXXTryStmt()
4296 CFGBlock *PrevTryTerminatedBlock = TryTerminatedBlock; in VisitCXXTryStmt()
4299 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitCXXTryStmt()
4312 CFGBlock *CatchBlock = VisitCXXCatchStmt(CS); in VisitCXXTryStmt()
4330 SaveAndRestore<CFGBlock*> save_try(TryTerminatedBlock, NewTryTerminatedBlock); in VisitCXXTryStmt()
4338 CFGBlock *CFGBuilder::VisitCXXCatchStmt(CXXCatchStmt *CS) { in VisitCXXCatchStmt()
4357 CFGBlock *CatchBlock = Block; in VisitCXXCatchStmt()
4381 CFGBlock *CFGBuilder::VisitCXXForRangeStmt(CXXForRangeStmt *S) { in VisitCXXForRangeStmt()
4411 CFGBlock *LoopSuccessor = nullptr; in VisitCXXForRangeStmt()
4425 CFGBlock *ConditionBlock = createBlock(false); in VisitCXXForRangeStmt()
4431 CFGBlock *BeginConditionBlock = addStmt(C); in VisitCXXForRangeStmt()
4454 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitCXXForRangeStmt()
4488 CFGBlock *LoopVarStmtBlock = addStmt(S->getLoopVarStmt()); in VisitCXXForRangeStmt()
4505 CFGBlock *Head = addStmt(S->getRangeStmt()); in VisitCXXForRangeStmt()
4511 CFGBlock *CFGBuilder::VisitExprWithCleanups(ExprWithCleanups *E, in VisitExprWithCleanups()
4526 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E, in VisitCXXBindTemporaryExpr()
4542 CFGBlock *CFGBuilder::VisitCXXConstructExpr(CXXConstructExpr *C, in VisitCXXConstructExpr()
4555 CFGBlock *CFGBuilder::VisitCXXNewExpr(CXXNewExpr *NE, in VisitCXXNewExpr()
4580 CFGBlock *CFGBuilder::VisitCXXDeleteExpr(CXXDeleteExpr *DE, in VisitCXXDeleteExpr()
4597 CFGBlock *CFGBuilder::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E, in VisitCXXFunctionalCastExpr()
4608 CFGBlock *CFGBuilder::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *C, in VisitCXXTemporaryObjectExpr()
4620 CFGBlock *CFGBuilder::VisitImplicitCastExpr(ImplicitCastExpr *E, in VisitImplicitCastExpr()
4633 CFGBlock *CFGBuilder::VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc) { in VisitConstantExpr()
4637 CFGBlock *CFGBuilder::VisitIndirectGotoStmt(IndirectGotoStmt *I) { in VisitIndirectGotoStmt()
4639 CFGBlock *IBlock = cfg->getIndirectGotoBlock(); in VisitIndirectGotoStmt()
4657 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed, in VisitForTemporaryDtors()
4732 CFGBlock *B = Block; in VisitForTemporaryDtors()
4735 if (CFGBlock *R = VisitForTemporaryDtors( in VisitForTemporaryDtors()
4758 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E, in VisitChildrenForTemporaryDtors()
4770 CFGBlock *B = Block; in VisitChildrenForTemporaryDtors()
4773 if (CFGBlock *R = VisitForTemporaryDtors(Child, ExternallyDestructed, Context)) in VisitChildrenForTemporaryDtors()
4779 CFGBlock *CFGBuilder::VisitBinaryOperatorForTemporaryDtors( in VisitBinaryOperatorForTemporaryDtors()
4784 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
4785 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), ExternallyDestructed, Context); in VisitBinaryOperatorForTemporaryDtors()
4809 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
4810 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
4818 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExprForTemporaryDtors( in VisitCXXBindTemporaryExprForTemporaryDtors()
4822 CFGBlock *B = VisitForTemporaryDtors(E->getSubExpr(), true, Context); in VisitCXXBindTemporaryExprForTemporaryDtors()
4855 CFGBlock *FalseSucc) { in InsertTempDtorDecisionBlock()
4861 CFGBlock *Decision = createBlock(false); in InsertTempDtorDecisionBlock()
4870 CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors( in VisitConditionalOperatorForTemporaryDtors()
4874 CFGBlock *ConditionBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
4875 CFGBlock *ConditionSucc = Succ; in VisitConditionalOperatorForTemporaryDtors()
4883 CFGBlock *TrueBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
4902 CFGBlock *CFGBuilder::VisitOMPExecutableDirective(OMPExecutableDirective *D, in VisitOMPExecutableDirective()
4910 CFGBlock *B = Block; in VisitOMPExecutableDirective()
4918 if (CFGBlock *R = Visit(S)) in VisitOMPExecutableDirective()
4926 if (CFGBlock *R = addStmt(S)) in VisitOMPExecutableDirective()
4936 CFGBlock *CFG::createBlock() { in createBlock()
4940 CFGBlock *Mem = getAllocator().Allocate<CFGBlock>(); in createBlock()
4941 new (Mem) CFGBlock(NumBlockIDs++, BlkBVC, this); in createBlock()
4968 llvm::SmallPtrSet<const CFGBlock *, 4> Visited; in isLinear()
4969 const CFGBlock *B = Entry; in isLinear()
4978 const CFGBlock *FirstReachableB = nullptr; in isLinear()
4979 for (const CFGBlock::AdjacentBlock &AB : B->succs()) { in isLinear()
5070 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, bool IsReachable) in AdjacentBlock()
5075 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock) in AdjacentBlock()
5080 void CFGBlock::addSuccessor(AdjacentBlock Succ, in addSuccessor()
5082 if (CFGBlock *B = Succ.getReachableBlock()) in addSuccessor()
5085 if (CFGBlock *UnreachableB = Succ.getPossiblyUnreachableBlock()) in addSuccessor()
5091 bool CFGBlock::FilterEdge(const CFGBlock::FilterOptions &F, in FilterEdge()
5092 const CFGBlock *From, const CFGBlock *To) { in FilterEdge()
5135 for (CFGBlock::const_iterator BI = (*I)->begin(), BEnd = (*I)->end() ; in StmtPrinterHelper()
5615 const CFGBlock &B, in print_block()
5681 for (CFGBlock::const_iterator I = B.begin(), E = B.end() ; in print_block()
5727 for (CFGBlock::const_pred_iterator I = B.pred_begin(), E = B.pred_end(); in print_block()
5732 CFGBlock *B = *I; in print_block()
5764 for (CFGBlock::const_succ_iterator I = B.succ_begin(), E = B.succ_end(); in print_block()
5769 CFGBlock *B = *I; in print_block()
5821 size_t CFGBlock::getIndexInCFG() const { in getIndexInCFG()
5826 void CFGBlock::dump(const CFG* cfg, const LangOptions &LO, in dump()
5831 LLVM_DUMP_METHOD void CFGBlock::dump() const { in dump()
5837 void CFGBlock::print(raw_ostream &OS, const CFG* cfg, in print()
5845 void CFGBlock::printTerminator(raw_ostream &OS, in printTerminator()
5852 void CFGBlock::printTerminatorJson(raw_ostream &Out, const LangOptions &LO, in printTerminatorJson()
5868 static bool isImmediateSinkBlock(const CFGBlock *Blk) { in isImmediateSinkBlock()
5889 bool CFGBlock::isInevitablySinking() const { in isInevitablySinking()
5892 const CFGBlock *StartBlk = this; in isInevitablySinking()
5896 llvm::SmallVector<const CFGBlock *, 32> DFSWorkList; in isInevitablySinking()
5897 llvm::SmallPtrSet<const CFGBlock *, 32> Visited; in isInevitablySinking()
5901 const CFGBlock *Blk = DFSWorkList.back(); in isInevitablySinking()
5913 if (const CFGBlock *SuccBlk = Succ.getReachableBlock()) { in isInevitablySinking()
5927 const Expr *CFGBlock::getLastCondition() const { in getLastCondition()
5955 Stmt *CFGBlock::getTerminatorCondition(bool StripParens) { in getTerminatorCondition()
6043 static std::string getNodeLabel(const CFGBlock *Node, const CFG* Graph) { in getNodeLabel()