]> granicus.if.org Git - clang/commitdiff
Correctly connect 'continue' and 'break' statements in Objective-C fast enumeration...
authorTed Kremenek <kremenek@apple.com>
Thu, 13 Nov 2008 06:36:45 +0000 (06:36 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 13 Nov 2008 06:36:45 +0000 (06:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59226 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/CFG.cpp

index 35eaa1433226383d77949a7ea61c98590b3ff7d8..fd3741291ee25ea80ba9974865902ef4f81fdf14 100644 (file)
@@ -839,7 +839,14 @@ CFGBlock* CFGBuilder::VisitObjCForCollectionStmt(ObjCForCollectionStmt* S) {
   ConditionBlock->setTerminator(S); // No need to call FinishBlock; 1 stmt
   
   // Now create the true branch.
+  // Save the current values for the continue and break targets
+  SaveAndRestore<CFGBlock*> save_continue(ContinueTargetBlock),
+                            save_break(BreakTargetBlock); 
+  
+  BreakTargetBlock = LoopSuccessor;
+  ContinueTargetBlock = ConditionBlock;  
   Succ = ConditionBlock;
+  
   CFGBlock* BodyBlock = Visit(S->getBody());
   FinishBlock(BodyBlock);