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()
1505 CFGBlock *B = addStmt(Statement); in buildCFG()
1523 CFGBlock *VBaseSucc = nullptr; in buildCFG()
1555 CFGBlock *B = I->block; in buildCFG()
1573 CFGBlock *Successor = (I+1)->block; in buildCFG()
1591 if (CFGBlock *B = cfg->getIndirectGotoBlock()) in buildCFG()
1616 CFGBlock *CFGBuilder::createBlock(bool add_successor) { in createBlock()
1617 CFGBlock *B = cfg->createBlock(); in createBlock()
1626 CFGBlock *CFGBuilder::createNoReturnBlock() { in createNoReturnBlock()
1627 CFGBlock *B = createBlock(false); in createNoReturnBlock()
1634 CFGBlock *CFGBuilder::addInitializer(CXXCtorInitializer *I) { in addInitializer()
1675 if (CFGBlock *R = Visit(Child)) in addInitializer()
2073 void CFGBuilder::prependAutomaticObjDtorsWithTerminator(CFGBlock *Blk, in prependAutomaticObjDtorsWithTerminator()
2078 CFGBlock::iterator InsertPos in prependAutomaticObjDtorsWithTerminator()
2091 CFGBlock *Blk, LocalScope::const_iterator B, LocalScope::const_iterator E) { in prependAutomaticObjLifetimeWithTerminator()
2095 CFGBlock::iterator InsertPos = in prependAutomaticObjLifetimeWithTerminator()
2110 CFGBlock *Blk, LocalScope::const_iterator B, LocalScope::const_iterator E) { in prependAutomaticObjScopeEndWithTerminator()
2114 CFGBlock::iterator InsertPos = in prependAutomaticObjScopeEndWithTerminator()
2126 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc, in Visit()
2342 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) { in VisitStmt()
2352 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) { in VisitChildren()
2353 CFGBlock *B = Block; in VisitChildren()
2360 if (CFGBlock *R = Visit(Child)) in VisitChildren()
2366 CFGBlock *CFGBuilder::VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc) { in VisitInitListExpr()
2371 CFGBlock *B = Block; in VisitInitListExpr()
2377 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2382 if (CFGBlock *R = Visit(Child)) in VisitInitListExpr()
2389 CFGBlock *CFGBuilder::VisitAddrLabelExpr(AddrLabelExpr *A, in VisitAddrLabelExpr()
2401 CFGBlock *CFGBuilder::VisitUnaryOperator(UnaryOperator *U, in VisitUnaryOperator()
2414 CFGBlock *CFGBuilder::VisitLogicalOperator(BinaryOperator *B) { in VisitLogicalOperator()
2415 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitLogicalOperator()
2425 std::pair<CFGBlock*, CFGBlock*>
2428 CFGBlock *TrueBlock, in VisitLogicalOperator()
2429 CFGBlock *FalseBlock) { in VisitLogicalOperator()
2434 CFGBlock *RHSBlock, *ExitBlock; in VisitLogicalOperator()
2493 CFGBlock *LHSBlock = createBlock(false); in VisitLogicalOperator()
2497 CFGBlock *EntryLHSBlock = addStmt(LHS); in VisitLogicalOperator()
2518 CFGBlock *CFGBuilder::VisitBinaryOperator(BinaryOperator *B, in VisitBinaryOperator()
2548 CFGBlock *RBlock = Visit(B->getRHS()); in VisitBinaryOperator()
2549 CFGBlock *LBlock = Visit(B->getLHS()); in VisitBinaryOperator()
2556 CFGBlock *CFGBuilder::VisitNoRecurse(Expr *E, AddStmtChoice asc) { in VisitNoRecurse()
2564 CFGBlock *CFGBuilder::VisitBreakStmt(BreakStmt *B) { in VisitBreakStmt()
2600 CFGBlock *CFGBuilder::VisitCallExpr(CallExpr *C, AddStmtChoice asc) { in VisitCallExpr()
2685 CFGBlock *CFGBuilder::VisitChooseExpr(ChooseExpr *C, in VisitChooseExpr()
2687 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitChooseExpr()
2695 CFGBlock *LHSBlock = Visit(C->getLHS(), alwaysAdd); in VisitChooseExpr()
2701 CFGBlock *RHSBlock = Visit(C->getRHS(), alwaysAdd); in VisitChooseExpr()
2714 CFGBlock *CFGBuilder::VisitCompoundStmt(CompoundStmt *C, bool ExternallyDestructed) { in VisitCompoundStmt()
2724 CFGBlock *LastBlock = Block; in VisitCompoundStmt()
2730 CFGBlock *newBlock = Visit(*I, AddStmtChoice::AlwaysAdd, in VisitCompoundStmt()
2745 CFGBlock *CFGBuilder::VisitConditionalOperator(AbstractConditionalOperator *C, in VisitConditionalOperator()
2752 CFGBlock *ConfluenceBlock = Block ? Block : createBlock(); in VisitConditionalOperator()
2765 CFGBlock *LHSBlock = nullptr; in VisitConditionalOperator()
2778 CFGBlock *RHSBlock = Visit(C->getFalseExpr(), alwaysAdd); in VisitConditionalOperator()
2812 CFGBlock *CFGBuilder::VisitDeclStmt(DeclStmt *DS) { in VisitDeclStmt()
2822 CFGBlock *B = nullptr; in VisitDeclStmt()
2845 CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) { in VisitDeclSubExpr()
2857 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2860 if (CFGBlock *NewBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2877 CFGBlock *blockAfterStaticInit = nullptr; in VisitDeclSubExpr()
2915 CFGBlock *LastBlock = Block; in VisitDeclSubExpr()
2922 if (CFGBlock *newBlock = Visit(EC->getSubExpr())) in VisitDeclSubExpr()
2926 if (CFGBlock *newBlock = Visit(Init)) in VisitDeclSubExpr()
2936 if (CFGBlock *newBlock = addStmt(VA->getSizeExpr())) in VisitDeclSubExpr()
2946 CFGBlock *B = LastBlock; in VisitDeclSubExpr()
2959 CFGBlock *CFGBuilder::VisitIfStmt(IfStmt *I) { in VisitIfStmt()
2991 CFGBlock *ElseBlock = Succ; in VisitIfStmt()
2994 SaveAndRestore<CFGBlock*> sv(Succ); in VisitIfStmt()
3016 CFGBlock *ThenBlock; in VisitIfStmt()
3020 SaveAndRestore<CFGBlock*> sv(Succ); in VisitIfStmt()
3053 CFGBlock *LastBlock; in VisitIfStmt()
3093 CFGBlock *CFGBuilder::VisitReturnStmt(Stmt *S) { in VisitReturnStmt()
3130 CFGBlock *CFGBuilder::VisitSEHExceptStmt(SEHExceptStmt *ES) { in VisitSEHExceptStmt()
3139 CFGBlock *SEHExceptBlock = Block; in VisitSEHExceptStmt()
3158 CFGBlock *CFGBuilder::VisitSEHFinallyStmt(SEHFinallyStmt *FS) { in VisitSEHFinallyStmt()
3162 CFGBlock *CFGBuilder::VisitSEHLeaveStmt(SEHLeaveStmt *LS) { in VisitSEHLeaveStmt()
3183 CFGBlock *CFGBuilder::VisitSEHTryStmt(SEHTryStmt *Terminator) { in VisitSEHTryStmt()
3186 CFGBlock *SEHTrySuccessor = nullptr; in VisitSEHTryStmt()
3198 CFGBlock *PrevSEHTryTerminatedBlock = TryTerminatedBlock; in VisitSEHTryStmt()
3201 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitSEHTryStmt()
3210 CFGBlock *ExceptBlock = VisitSEHExceptStmt(Except); in VisitSEHTryStmt()
3226 SaveAndRestore<CFGBlock *> save_try(TryTerminatedBlock, in VisitSEHTryStmt()
3241 CFGBlock *CFGBuilder::VisitLabelStmt(LabelStmt *L) { in VisitLabelStmt()
3244 CFGBlock *LabelBlock = Block; in VisitLabelStmt()
3270 CFGBlock *CFGBuilder::VisitBlockExpr(BlockExpr *E, AddStmtChoice asc) { in VisitBlockExpr()
3271 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitBlockExpr()
3274 CFGBlock *Tmp = Visit(CopyExpr); in VisitBlockExpr()
3282 CFGBlock *CFGBuilder::VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc) { in VisitLambdaExpr()
3283 CFGBlock *LastBlock = VisitNoRecurse(E, asc); in VisitLambdaExpr()
3287 CFGBlock *Tmp = Visit(Init); in VisitLambdaExpr()
3295 CFGBlock *CFGBuilder::VisitGotoStmt(GotoStmt *G) { in VisitGotoStmt()
3317 CFGBlock *CFGBuilder::VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc) { in VisitGCCAsmStmt()
3339 CFGBlock *CFGBuilder::VisitForStmt(ForStmt *F) { in VisitForStmt()
3340 CFGBlock *LoopSuccessor = nullptr; in VisitForStmt()
3375 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitForStmt()
3382 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitForStmt()
3434 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitForStmt()
3517 CFGBlock *
3527 CFGBlock *CFGBuilder::VisitMemberExpr(MemberExpr *M, AddStmtChoice asc) { in VisitMemberExpr()
3535 CFGBlock *CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) { in VisitObjCForCollectionStmt()
3567 CFGBlock *LoopSuccessor = nullptr; in VisitObjCForCollectionStmt()
3578 CFGBlock *ExitConditionBlock = createBlock(false); in VisitObjCForCollectionStmt()
3592 CFGBlock *EntryConditionBlock = Visit(S->getElement(), in VisitObjCForCollectionStmt()
3607 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitObjCForCollectionStmt()
3614 CFGBlock *LoopBackBlock = nullptr; in VisitObjCForCollectionStmt()
3621 CFGBlock *BodyBlock = addStmt(S->getBody()); in VisitObjCForCollectionStmt()
3643 CFGBlock *CFGBuilder::VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S) { in VisitObjCAutoreleasePoolStmt()
3649 CFGBlock *CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S) { in VisitObjCAtSynchronizedStmt()
3653 CFGBlock *SyncBlock = addStmt(S->getSynchBody()); in VisitObjCAtSynchronizedStmt()
3673 CFGBlock *CFGBuilder::VisitObjCAtTryStmt(ObjCAtTryStmt *S) { in VisitObjCAtTryStmt()
3678 CFGBlock *CFGBuilder::VisitPseudoObjectExpr(PseudoObjectExpr *E) { in VisitPseudoObjectExpr()
3684 CFGBlock *lastBlock = Block; in VisitPseudoObjectExpr()
3696 if (CFGBlock *B = Visit(Semantic)) in VisitPseudoObjectExpr()
3703 CFGBlock *CFGBuilder::VisitWhileStmt(WhileStmt *W) { in VisitWhileStmt()
3704 CFGBlock *LoopSuccessor = nullptr; in VisitWhileStmt()
3730 CFGBlock *BodyBlock = nullptr, *TransitionBlock = nullptr; in VisitWhileStmt()
3737 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitWhileStmt()
3770 CFGBlock *EntryConditionBlock = nullptr, *ExitConditionBlock = nullptr; in VisitWhileStmt()
3838 CFGBlock *CFGBuilder::VisitObjCAtCatchStmt(ObjCAtCatchStmt *S) { in VisitObjCAtCatchStmt()
3844 CFGBlock *CFGBuilder::VisitObjCAtThrowStmt(ObjCAtThrowStmt *S) { in VisitObjCAtThrowStmt()
3863 CFGBlock *CFGBuilder::VisitObjCMessageExpr(ObjCMessageExpr *ME, in VisitObjCMessageExpr()
3873 CFGBlock *CFGBuilder::VisitCXXThrowExpr(CXXThrowExpr *T) { in VisitCXXThrowExpr()
3893 CFGBlock *CFGBuilder::VisitDoStmt(DoStmt *D) { in VisitDoStmt()
3894 CFGBlock *LoopSuccessor = nullptr; in VisitDoStmt()
3910 CFGBlock *ExitConditionBlock = createBlock(false); in VisitDoStmt()
3911 CFGBlock *EntryConditionBlock = ExitConditionBlock; in VisitDoStmt()
3934 CFGBlock *BodyBlock = nullptr; in VisitDoStmt()
3939 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitDoStmt()
3974 CFGBlock *LoopBackBlock = createBlock(); in VisitDoStmt()
3997 CFGBlock *CFGBuilder::VisitContinueStmt(ContinueStmt *C) { in VisitContinueStmt()
4018 CFGBlock *CFGBuilder::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E, in VisitUnaryExprOrTypeTraitExpr()
4031 CFGBlock *lastBlock = Block; in VisitUnaryExprOrTypeTraitExpr()
4043 CFGBlock *CFGBuilder::VisitStmtExpr(StmtExpr *SE, AddStmtChoice asc) { in VisitStmtExpr()
4051 CFGBlock *CFGBuilder::VisitSwitchStmt(SwitchStmt *Terminator) { in VisitSwitchStmt()
4054 CFGBlock *SwitchSuccessor = nullptr; in VisitSwitchStmt()
4078 SaveAndRestore<CFGBlock*> save_switch(SwitchTerminatedBlock), in VisitSwitchStmt()
4140 CFGBlock *LastBlock = addStmt(Terminator->getCond()); in VisitSwitchStmt()
4198 CFGBlock *CFGBuilder::VisitCaseStmt(CaseStmt *CS) { in VisitCaseStmt()
4201 CFGBlock *TopBlock = nullptr, *LastBlock = nullptr; in VisitCaseStmt()
4208 CFGBlock *currentBlock = createBlock(false); in VisitCaseStmt()
4229 CFGBlock *CaseBlock = Block; in VisitCaseStmt()
4261 CFGBlock *CFGBuilder::VisitDefaultStmt(DefaultStmt *Terminator) { in VisitDefaultStmt()
4292 CFGBlock *CFGBuilder::VisitCXXTryStmt(CXXTryStmt *Terminator) { in VisitCXXTryStmt()
4295 CFGBlock *TrySuccessor = nullptr; in VisitCXXTryStmt()
4303 CFGBlock *PrevTryTerminatedBlock = TryTerminatedBlock; in VisitCXXTryStmt()
4306 CFGBlock *NewTryTerminatedBlock = createBlock(false); in VisitCXXTryStmt()
4319 CFGBlock *CatchBlock = VisitCXXCatchStmt(CS); in VisitCXXTryStmt()
4337 SaveAndRestore<CFGBlock*> save_try(TryTerminatedBlock, NewTryTerminatedBlock); in VisitCXXTryStmt()
4345 CFGBlock *CFGBuilder::VisitCXXCatchStmt(CXXCatchStmt *CS) { in VisitCXXCatchStmt()
4364 CFGBlock *CatchBlock = Block; in VisitCXXCatchStmt()
4388 CFGBlock *CFGBuilder::VisitCXXForRangeStmt(CXXForRangeStmt *S) { in VisitCXXForRangeStmt()
4418 CFGBlock *LoopSuccessor = nullptr; in VisitCXXForRangeStmt()
4432 CFGBlock *ConditionBlock = createBlock(false); in VisitCXXForRangeStmt()
4438 CFGBlock *BeginConditionBlock = addStmt(C); in VisitCXXForRangeStmt()
4461 SaveAndRestore<CFGBlock*> save_Block(Block), save_Succ(Succ); in VisitCXXForRangeStmt()
4495 CFGBlock *LoopVarStmtBlock = addStmt(S->getLoopVarStmt()); in VisitCXXForRangeStmt()
4512 CFGBlock *Head = addStmt(S->getRangeStmt()); in VisitCXXForRangeStmt()
4518 CFGBlock *CFGBuilder::VisitExprWithCleanups(ExprWithCleanups *E, in VisitExprWithCleanups()
4533 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E, in VisitCXXBindTemporaryExpr()
4549 CFGBlock *CFGBuilder::VisitCXXConstructExpr(CXXConstructExpr *C, in VisitCXXConstructExpr()
4562 CFGBlock *CFGBuilder::VisitCXXNewExpr(CXXNewExpr *NE, in VisitCXXNewExpr()
4587 CFGBlock *CFGBuilder::VisitCXXDeleteExpr(CXXDeleteExpr *DE, in VisitCXXDeleteExpr()
4604 CFGBlock *CFGBuilder::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E, in VisitCXXFunctionalCastExpr()
4615 CFGBlock *CFGBuilder::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *C, in VisitCXXTemporaryObjectExpr()
4627 CFGBlock *CFGBuilder::VisitImplicitCastExpr(ImplicitCastExpr *E, in VisitImplicitCastExpr()
4640 CFGBlock *CFGBuilder::VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc) { in VisitConstantExpr()
4644 CFGBlock *CFGBuilder::VisitIndirectGotoStmt(IndirectGotoStmt *I) { in VisitIndirectGotoStmt()
4646 CFGBlock *IBlock = cfg->getIndirectGotoBlock(); in VisitIndirectGotoStmt()
4664 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed, in VisitForTemporaryDtors()
4739 CFGBlock *B = Block; in VisitForTemporaryDtors()
4742 if (CFGBlock *R = VisitForTemporaryDtors( in VisitForTemporaryDtors()
4765 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E, in VisitChildrenForTemporaryDtors()
4777 CFGBlock *B = Block; in VisitChildrenForTemporaryDtors()
4780 if (CFGBlock *R = VisitForTemporaryDtors(Child, ExternallyDestructed, Context)) in VisitChildrenForTemporaryDtors()
4786 CFGBlock *CFGBuilder::VisitBinaryOperatorForTemporaryDtors( in VisitBinaryOperatorForTemporaryDtors()
4791 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
4792 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), ExternallyDestructed, Context); in VisitBinaryOperatorForTemporaryDtors()
4816 CFGBlock *RHSBlock = VisitForTemporaryDtors(E->getRHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
4817 CFGBlock *LHSBlock = VisitForTemporaryDtors(E->getLHS(), false, Context); in VisitBinaryOperatorForTemporaryDtors()
4825 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExprForTemporaryDtors( in VisitCXXBindTemporaryExprForTemporaryDtors()
4829 CFGBlock *B = VisitForTemporaryDtors(E->getSubExpr(), true, Context); in VisitCXXBindTemporaryExprForTemporaryDtors()
4862 CFGBlock *FalseSucc) { in InsertTempDtorDecisionBlock()
4868 CFGBlock *Decision = createBlock(false); in InsertTempDtorDecisionBlock()
4877 CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors( in VisitConditionalOperatorForTemporaryDtors()
4881 CFGBlock *ConditionBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
4882 CFGBlock *ConditionSucc = Succ; in VisitConditionalOperatorForTemporaryDtors()
4890 CFGBlock *TrueBlock = Block; in VisitConditionalOperatorForTemporaryDtors()
4909 CFGBlock *CFGBuilder::VisitOMPExecutableDirective(OMPExecutableDirective *D, in VisitOMPExecutableDirective()
4917 CFGBlock *B = Block; in VisitOMPExecutableDirective()
4925 if (CFGBlock *R = Visit(S)) in VisitOMPExecutableDirective()
4933 if (CFGBlock *R = addStmt(S)) in VisitOMPExecutableDirective()
4943 CFGBlock *CFG::createBlock() { in createBlock()
4947 CFGBlock *Mem = getAllocator().Allocate<CFGBlock>(); in createBlock()
4948 new (Mem) CFGBlock(NumBlockIDs++, BlkBVC, this); in createBlock()
4975 llvm::SmallPtrSet<const CFGBlock *, 4> Visited; in isLinear()
4976 const CFGBlock *B = Entry; in isLinear()
4985 const CFGBlock *FirstReachableB = nullptr; in isLinear()
4986 for (const CFGBlock::AdjacentBlock &AB : B->succs()) { in isLinear()
5077 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, bool IsReachable) in AdjacentBlock()
5082 CFGBlock::AdjacentBlock::AdjacentBlock(CFGBlock *B, CFGBlock *AlternateBlock) in AdjacentBlock()
5087 void CFGBlock::addSuccessor(AdjacentBlock Succ, in addSuccessor()
5089 if (CFGBlock *B = Succ.getReachableBlock()) in addSuccessor()
5092 if (CFGBlock *UnreachableB = Succ.getPossiblyUnreachableBlock()) in addSuccessor()
5098 bool CFGBlock::FilterEdge(const CFGBlock::FilterOptions &F, in FilterEdge()
5099 const CFGBlock *From, const CFGBlock *To) { in FilterEdge()
5142 for (CFGBlock::const_iterator BI = (*I)->begin(), BEnd = (*I)->end() ; in StmtPrinterHelper()
5622 const CFGBlock &B, in print_block()
5688 for (CFGBlock::const_iterator I = B.begin(), E = B.end() ; in print_block()
5734 for (CFGBlock::const_pred_iterator I = B.pred_begin(), E = B.pred_end(); in print_block()
5739 CFGBlock *B = *I; in print_block()
5771 for (CFGBlock::const_succ_iterator I = B.succ_begin(), E = B.succ_end(); in print_block()
5776 CFGBlock *B = *I; in print_block()
5828 size_t CFGBlock::getIndexInCFG() const { in getIndexInCFG()
5833 void CFGBlock::dump(const CFG* cfg, const LangOptions &LO, in dump()
5838 LLVM_DUMP_METHOD void CFGBlock::dump() const { in dump()
5844 void CFGBlock::print(raw_ostream &OS, const CFG* cfg, in print()
5852 void CFGBlock::printTerminator(raw_ostream &OS, in printTerminator()
5859 void CFGBlock::printTerminatorJson(raw_ostream &Out, const LangOptions &LO, in printTerminatorJson()
5875 static bool isImmediateSinkBlock(const CFGBlock *Blk) { in isImmediateSinkBlock()
5896 bool CFGBlock::isInevitablySinking() const { in isInevitablySinking()
5899 const CFGBlock *StartBlk = this; in isInevitablySinking()
5903 llvm::SmallVector<const CFGBlock *, 32> DFSWorkList; in isInevitablySinking()
5904 llvm::SmallPtrSet<const CFGBlock *, 32> Visited; in isInevitablySinking()
5908 const CFGBlock *Blk = DFSWorkList.back(); in isInevitablySinking()
5920 if (const CFGBlock *SuccBlk = Succ.getReachableBlock()) { in isInevitablySinking()
5934 const Expr *CFGBlock::getLastCondition() const { in getLastCondition()
5962 Stmt *CFGBlock::getTerminatorCondition(bool StripParens) { in getTerminatorCondition()
6050 static std::string getNodeLabel(const CFGBlock *Node, const CFG* Graph) { in getNodeLabel()