aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/CFG.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2013-03-29 00:09:28 +0000
committerTed Kremenek <kremenek@apple.com>2013-03-29 00:09:28 +0000
commit0f5c5c60e9806d13f0907cd99d7204ffab0e08f7 (patch)
tree0473b998559db3ad653c7c3ca054bdb3ae7912a6 /lib/Analysis/CFG.cpp
parent02a88c3edf1aeb9580e0b6e444b30c52846a673c (diff)
Add static analyzer support for conditionally executing static initializers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178318 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/CFG.cpp')
-rw-r--r--lib/Analysis/CFG.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp
index f436ef3f6a..91a7fdf6bc 100644
--- a/lib/Analysis/CFG.cpp
+++ b/lib/Analysis/CFG.cpp
@@ -1665,6 +1665,7 @@ CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) {
// whether or not they are initialized.
if (Block) {
Succ = Block;
+ Block = 0;
if (badCFG)
return 0;
}
@@ -1714,15 +1715,14 @@ CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt *DS) {
if (ScopePos && VD == *ScopePos)
++ScopePos;
- CFGBlock *B = Block ? Block : LastBlock;
+ CFGBlock *B = LastBlock;
if (blockBeforeInit) {
Succ = B;
- Block = 0;
- CFGBlock *branchBlock = createBlock(false);
- branchBlock->setTerminator(DS);
- addSuccessor(branchBlock, blockBeforeInit);
- addSuccessor(branchBlock, B);
- B = branchBlock;
+ Block = createBlock(false);
+ Block->setTerminator(DS);
+ addSuccessor(Block, blockBeforeInit);
+ addSuccessor(Block, B);
+ B = Block;
}
return B;