aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-03-15 07:45:02 +0000
committerTed Kremenek <kremenek@apple.com>2008-03-15 07:45:02 +0000
commit2677ea871a25aa79f9db360f6ed10584c02267ad (patch)
tree4f524aa766e831d5bea2a8904835bb458abb3038
parent021e970d77b52372863b1c96503ecf8cfc6312df (diff)
Small bug fix in CFG construction: the active block for LabelStmts comes
from "Block", not the CFGBlock* returned from visiting its subexpression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48392 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--AST/CFG.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/AST/CFG.cpp b/AST/CFG.cpp
index 9bafb05daf..e2aba6b3ff 100644
--- a/AST/CFG.cpp
+++ b/AST/CFG.cpp
@@ -577,7 +577,8 @@ CFGBlock* CFGBuilder::VisitReturnStmt(ReturnStmt* R) {
CFGBlock* CFGBuilder::VisitLabelStmt(LabelStmt* L) {
// Get the block of the labeled statement. Add it to our map.
- CFGBlock* LabelBlock = Visit(L->getSubStmt());
+ Visit(L->getSubStmt());
+ CFGBlock* LabelBlock = Block;
if (!LabelBlock) // This can happen when the body is empty, i.e.
LabelBlock=createBlock(); // scopes that only contains NullStmts.
@@ -970,7 +971,7 @@ CFGBlock* CFGBuilder::VisitCaseStmt(CaseStmt* S) {
// This block is now the implicit successor of other blocks.
Succ = CaseBlock;
- return CaseBlock;
+ return CaseBlock;
}
CFGBlock* CFGBuilder::VisitDefaultStmt(DefaultStmt* S) {