diff options
Diffstat (limited to 'lib/AST/CFG.cpp')
-rw-r--r-- | lib/AST/CFG.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/AST/CFG.cpp b/lib/AST/CFG.cpp index f8c3c26bb1..82336a44e0 100644 --- a/lib/AST/CFG.cpp +++ b/lib/AST/CFG.cpp @@ -745,8 +745,15 @@ CFGBlock* CFGBuilder::VisitForStmt(ForStmt* F) { 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 @@ void CFG::print(llvm::raw_ostream& OS) const { // 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. |