summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/AST/CFG.cpp15
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;
}
OpenPOWER on IntegriCloud