Supply finished flag to EmitBlock for common statements which use
landing pads.
 - Primarily a cleanliness issue instead of a performance issue (this
   eliminates all blocks w/o predecessors on 176.gcc/expr.c), but this
   also allows subsequent code to recognize it is unreachable and
   potentially avoid IRgen.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59211 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp
index 25c8fd9..767e275 100644
--- a/lib/CodeGen/CGStmt.cpp
+++ b/lib/CodeGen/CGStmt.cpp
@@ -276,7 +276,7 @@
   }
   
   // Emit the continuation block for code after the if.
-  EmitBlock(ContBlock);
+  EmitBlock(ContBlock, true);
 }
 
 void CodeGenFunction::EmitWhileStmt(const WhileStmt &S) {
@@ -299,7 +299,7 @@
   
   // Create an exit block for when the condition fails, create a block for the
   // body of the loop.
-  llvm::BasicBlock *ExitBlock = createBasicBlock("while.exit");
+  llvm::BasicBlock *ExitBlock = createBasicBlock("while.end");
   llvm::BasicBlock *LoopBody  = createBasicBlock("while.body");
   
   // As long as the condition is true, go to the loop body.
@@ -319,7 +319,7 @@
   EmitBranch(LoopHeader);
   
   // Emit the exit block.
-  EmitBlock(ExitBlock);
+  EmitBlock(ExitBlock, true);
 
   // If LoopHeader is a simple forwarding block then eliminate it.
   if (!EmitBoolCondBranch 
@@ -369,7 +369,7 @@
     Builder.CreateCondBr(BoolCondVal, LoopBody, AfterDo);
   
   // Emit the exit block.
-  EmitBlock(AfterDo);
+  EmitBlock(AfterDo, true);
 
   // If DoCond is a simple forwarding block then eliminate it.
   if (!EmitBoolCondBranch && &DoCond->front() == DoCond->getTerminator()) {
@@ -382,9 +382,6 @@
 void CodeGenFunction::EmitForStmt(const ForStmt &S) {
   // FIXME: What do we do if the increment (f.e.) contains a stmt expression,
   // which contains a continue/break?
-  // TODO: We could keep track of whether the loop body contains any
-  // break/continue statements and not create unnecessary blocks (like
-  // "afterfor" for a condless loop) if it doesn't.
 
   // Evaluate the first part before the loop.
   if (S.getInit())
@@ -438,7 +435,7 @@
   EmitBranch(CondBlock);
 
   // Emit the fall-through block.
-  EmitBlock(AfterFor);
+  EmitBlock(AfterFor, true);
 }
 
 void CodeGenFunction::EmitReturnOfRValue(RValue RV, QualType Ty) {
@@ -652,7 +649,7 @@
   }
 
   // Emit continuation.
-  EmitBlock(NextBlock);
+  EmitBlock(NextBlock, true);
 
   SwitchInsn = SavedSwitchInsn;
   CaseRangeBlock = SavedCRBlock;