diff options
-rw-r--r-- | clang/AST/CFG.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/clang/AST/CFG.cpp b/clang/AST/CFG.cpp index ed9b320023d..0cab1f1b5c7 100644 --- a/clang/AST/CFG.cpp +++ b/clang/AST/CFG.cpp @@ -402,8 +402,21 @@ CFGBlock* CFGBuilder::WalkAST_VisitDeclSubExprs(StmtIterator& I) { Stmt* S = *I; ++I; WalkAST_VisitDeclSubExprs(I); + + // Optimization: Don't create separate block-level statements for literals. + + switch (S->getStmtClass()) { + case Stmt::IntegerLiteralClass: + case Stmt::CharacterLiteralClass: + case Stmt::StringLiteralClass: + break; + + // All other cases. + + default: + Block = addStmt(S); + } - Block = addStmt(S); return Block; } |