Lines Matching defs:CFGBuilder
9 // This file defines the CFG and CFGBuilder classes for representing and
174 class CFGBuilder;
194 bool alwaysAdd(CFGBuilder &builder,
213 /// - Init CFGBuilder::ScopePos with invalid position (equivalent for null),
215 /// LocalScope object using CFGBuilder::ScopePos as link to previous scope
216 /// and set CFGBuilder::ScopePos to the end of new scope,
217 /// - On every occurrence of VarDecl increase CFGBuilder::ScopePos if it points
222 /// between CFGBuilder::ScopePos and local scope position saved for jump
224 /// jump target position will be on the path to root from CFGBuilder::ScopePos
402 /// and is used by the CFGBuilder to decide if a branch condition
472 /// CFGBuilder - This class implements CFG construction from an AST.
478 /// CFGBuilder builder;
485 class CFGBuilder {
548 explicit CFGBuilder(ASTContext *astContext,
1378 inline bool AddStmtChoice::alwaysAdd(CFGBuilder &builder,
1383 bool CFGBuilder::alwaysAdd(const Stmt *stmt) {
1432 void CFGBuilder::consumeConstructionContext(
1448 void CFGBuilder::findConstructionContexts(
1563 void CFGBuilder::cleanupConstructionContext(Expr *E) {
1576 std::unique_ptr<CFG> CFGBuilder::buildCFG(const Decl *D, Stmt *Statement) {
1699 CFGBlock *CFGBuilder::createBlock(bool add_successor) {
1709 CFGBlock *CFGBuilder::createNoReturnBlock() {
1717 CFGBlock *CFGBuilder::addInitializer(CXXCtorInitializer *I) {
1812 void CFGBuilder::addLoopExit(const Stmt *LoopStmt){
1824 void CFGBuilder::addAutomaticObjHandling(LocalScope::const_iterator B,
1864 void CFGBuilder::addAutomaticObjDestruction(LocalScope::const_iterator B,
1915 void CFGBuilder::addScopeExitHandling(LocalScope::const_iterator B,
1953 void CFGBuilder::addScopeChangesHandling(LocalScope::const_iterator SrcPos,
1986 CFGBlock *CFGBuilder::createScopeChangesHandlingBlock(
2015 void CFGBuilder::addImplicitDtorsForDestructor(const CXXDestructorDecl *DD) {
2064 LocalScope* CFGBuilder::createOrReuseLocalScope(LocalScope* Scope) {
2073 void CFGBuilder::addLocalScopeForStmt(Stmt *S) {
2098 LocalScope* CFGBuilder::addLocalScopeForDeclStmt(DeclStmt *DS,
2110 bool CFGBuilder::needsAutomaticDestruction(const VarDecl *VD) const {
2114 bool CFGBuilder::hasTrivialDestructor(const VarDecl *VD) const {
2157 LocalScope* CFGBuilder::addLocalScopeForVarDecl(VarDecl *VD,
2182 void CFGBuilder::addLocalScopeAndDtors(Stmt *S) {
2191 CFGBlock *CFGBuilder::Visit(Stmt * S, AddStmtChoice asc,
2419 CFGBlock *CFGBuilder::VisitStmt(Stmt *S, AddStmtChoice asc) {
2429 CFGBlock *CFGBuilder::VisitChildren(Stmt *S) {
2443 CFGBlock *CFGBuilder::VisitInitListExpr(InitListExpr *ILE, AddStmtChoice asc) {
2466 CFGBlock *CFGBuilder::VisitAddrLabelExpr(AddrLabelExpr *A,
2485 CFGBlock *CFGBuilder::VisitAttributedStmt(AttributedStmt *A,
2503 CFGBlock *CFGBuilder::VisitUnaryOperator(UnaryOperator *U, AddStmtChoice asc) {
2515 CFGBlock *CFGBuilder::VisitLogicalOperator(BinaryOperator *B) {
2527 CFGBuilder::VisitLogicalOperator(BinaryOperator *B,
2619 CFGBlock *CFGBuilder::VisitBinaryOperator(BinaryOperator *B,
2657 CFGBlock *CFGBuilder::VisitNoRecurse(Expr *E, AddStmtChoice asc) {
2665 CFGBlock *CFGBuilder::VisitBreakStmt(BreakStmt *B) {
2701 CFGBlock *CFGBuilder::VisitCallExpr(CallExpr *C, AddStmtChoice asc) {
2786 CFGBlock *CFGBuilder::VisitChooseExpr(ChooseExpr *C,
2815 CFGBlock *CFGBuilder::VisitCompoundStmt(CompoundStmt *C,
2846 CFGBlock *CFGBuilder::VisitConditionalOperator(AbstractConditionalOperator *C,
2913 CFGBlock *CFGBuilder::VisitDeclStmt(DeclStmt *DS) {
2946 CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) {
3078 CFGBlock *CFGBuilder::VisitIfStmt(IfStmt *I) {
3217 CFGBlock *CFGBuilder::VisitReturnStmt(Stmt *S) {
3265 CFGBlock *CFGBuilder::VisitCoroutineSuspendExpr(CoroutineSuspendExpr *E,
3286 CFGBlock *CFGBuilder::VisitSEHExceptStmt(SEHExceptStmt *ES) {
3314 CFGBlock *CFGBuilder::VisitSEHFinallyStmt(SEHFinallyStmt *FS) {
3318 CFGBlock *CFGBuilder::VisitSEHLeaveStmt(SEHLeaveStmt *LS) {
3339 CFGBlock *CFGBuilder::VisitSEHTryStmt(SEHTryStmt *Terminator) {
3396 CFGBlock *CFGBuilder::VisitLabelStmt(LabelStmt *L) {
3424 CFGBlock *CFGBuilder::VisitBlockExpr(BlockExpr *E, AddStmtChoice asc) {
3436 CFGBlock *CFGBuilder::VisitLambdaExpr(LambdaExpr *E, AddStmtChoice asc) {
3461 CFGBlock *CFGBuilder::VisitGotoStmt(GotoStmt *G) {
3483 CFGBlock *CFGBuilder::VisitGCCAsmStmt(GCCAsmStmt *G, AddStmtChoice asc) {
3505 CFGBlock *CFGBuilder::VisitForStmt(ForStmt *F) {
3687 CFGBuilder::VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *MTE,
3696 CFGBlock *CFGBuilder::VisitMemberExpr(MemberExpr *M, AddStmtChoice asc) {
3704 CFGBlock *CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) {
3812 CFGBlock *CFGBuilder::VisitObjCAutoreleasePoolStmt(ObjCAutoreleasePoolStmt *S) {
3818 CFGBlock *CFGBuilder::VisitObjCAtSynchronizedStmt(ObjCAtSynchronizedStmt *S) {
3842 CFGBlock *CFGBuilder::VisitPseudoObjectExpr(PseudoObjectExpr *E) {
3867 CFGBlock *CFGBuilder::VisitWhileStmt(WhileStmt *W) {
4002 CFGBlock *CFGBuilder::VisitArrayInitLoopExpr(ArrayInitLoopExpr *A,
4023 CFGBlock *CFGBuilder::VisitObjCAtCatchStmt(ObjCAtCatchStmt *CS) {
4053 CFGBlock *CFGBuilder::VisitObjCAtThrowStmt(ObjCAtThrowStmt *S) {
4073 CFGBlock *CFGBuilder::VisitObjCAtTryStmt(ObjCAtTryStmt *Terminator) {
4132 CFGBlock *CFGBuilder::VisitObjCMessageExpr(ObjCMessageExpr *ME,
4142 CFGBlock *CFGBuilder::VisitCXXThrowExpr(CXXThrowExpr *T) {
4162 CFGBlock *CFGBuilder::VisitCXXTypeidExpr(CXXTypeidExpr *S, AddStmtChoice asc) {
4181 CFGBlock *CFGBuilder::VisitDoStmt(DoStmt *D) {
4285 CFGBlock *CFGBuilder::VisitContinueStmt(ContinueStmt *C) {
4306 CFGBlock *CFGBuilder::VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E,
4331 CFGBlock *CFGBuilder::VisitStmtExpr(StmtExpr *SE, AddStmtChoice asc) {
4339 CFGBlock *CFGBuilder::VisitSwitchStmt(SwitchStmt *Terminator) {
4484 CFGBlock *CFGBuilder::VisitCaseStmt(CaseStmt *CS) {
4547 CFGBlock *CFGBuilder::VisitDefaultStmt(DefaultStmt *Terminator) {
4578 CFGBlock *CFGBuilder::VisitCXXTryStmt(CXXTryStmt *Terminator) {
4632 CFGBlock *CFGBuilder::VisitCXXCatchStmt(CXXCatchStmt *CS) {
4675 CFGBlock *CFGBuilder::VisitCXXForRangeStmt(CXXForRangeStmt *S) {
4805 CFGBlock *CFGBuilder::VisitExprWithCleanups(ExprWithCleanups *E,
4820 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E,
4836 CFGBlock *CFGBuilder::VisitCXXConstructExpr(CXXConstructExpr *C,
4847 CFGBlock *CFGBuilder::VisitCXXNewExpr(CXXNewExpr *NE,
4872 CFGBlock *CFGBuilder::VisitCXXDeleteExpr(CXXDeleteExpr *DE,
4889 CFGBlock *CFGBuilder::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *E,
4900 CFGBlock *CFGBuilder::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *E,
4911 CFGBlock *CFGBuilder::VisitImplicitCastExpr(ImplicitCastExpr *E,
4924 CFGBlock *CFGBuilder::VisitConstantExpr(ConstantExpr *E, AddStmtChoice asc) {
4928 CFGBlock *CFGBuilder::VisitIndirectGotoStmt(IndirectGotoStmt *I) {
4948 CFGBlock *CFGBuilder::VisitForTemporaryDtors(Stmt *E, bool ExternallyDestructed,
5049 CFGBlock *CFGBuilder::VisitChildrenForTemporaryDtors(Stmt *E,
5070 CFGBlock *CFGBuilder::VisitBinaryOperatorForTemporaryDtors(
5109 CFGBlock *CFGBuilder::VisitCXXBindTemporaryExprForTemporaryDtors(
5145 void CFGBuilder::InsertTempDtorDecisionBlock(const TempDtorContext &Context,
5161 CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors(
5193 CFGBlock *CFGBuilder::VisitOMPExecutableDirective(OMPExecutableDirective *D,
5245 CFGBuilder Builder(C, BO);
5313 // FIXME: See CFGBuilder::addLocalScopeForVarDecl.