Fix CFG bug where the 'increment' block for a 'for' statement would not be
properly reversed once constructed.

This fixes PR 3125:

http://llvm.org/bugs/show_bug.cgi?id=3125


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59982 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/CFG.cpp b/lib/AST/CFG.cpp
index f8c3c26..82336a4 100644
--- a/lib/AST/CFG.cpp
+++ b/lib/AST/CFG.cpp
@@ -745,8 +745,15 @@
     if (Stmt* I = F->getInc()) {
       // Generate increment code in its own basic block.  This is the target
       // of continue statements.
-      Succ = addStmt(I);
-      Block = 0;
+      Succ = Visit(I);
+      
+      // Finish up the increment block if it hasn't been already.
+      if (Block) {
+        assert (Block == Succ);
+        FinishBlock(Block);
+        Block = 0;
+      }
+      
       ContinueTargetBlock = Succ;    
     }
     else {
@@ -1621,6 +1628,7 @@
   
   // Print the exit block.
   print_block(OS, this, getExit(), &Helper, true);
+  OS.flush();
 }  
 
 /// dump - A simply pretty printer of a CFGBlock that outputs to stderr.