From: Ted Kremenek Date: Sat, 15 Mar 2008 07:45:02 +0000 (+0000) Subject: Small bug fix in CFG construction: the active block for LabelStmts comes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2677ea871a25aa79f9db360f6ed10584c02267ad;p=clang 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 --- 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) {