Correctly connect 'continue' and 'break' statements in Objective-C fast enumeration for blocks to the appropriate basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59226 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/CFG.cpp b/lib/AST/CFG.cpp
index 35eaa14..fd37412 100644
--- a/lib/AST/CFG.cpp
+++ b/lib/AST/CFG.cpp
@@ -839,7 +839,14 @@
   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);