Do not codegen dummy block.
Dummy block is an empty block with no predecessors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42451 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CodeGen/CGStmt.cpp b/CodeGen/CGStmt.cpp
index b7f1f29..f1f915e 100644
--- a/CodeGen/CGStmt.cpp
+++ b/CodeGen/CGStmt.cpp
@@ -131,13 +131,25 @@
   // Emit the 'then' code.
   EmitBlock(ThenBlock);
   EmitStmt(S.getThen());
-  Builder.CreateBr(ContBlock);
+  llvm::BasicBlock *BB = Builder.GetInsertBlock();
+  if (isDummyBlock(BB)) {
+    BB->eraseFromParent();
+    Builder.SetInsertPoint(ThenBlock);
+  }
+  else
+    Builder.CreateBr(ContBlock);
   
   // Emit the 'else' code if present.
   if (const Stmt *Else = S.getElse()) {
     EmitBlock(ElseBlock);
     EmitStmt(Else);
-    Builder.CreateBr(ContBlock);
+    llvm::BasicBlock *BB = Builder.GetInsertBlock();
+    if (isDummyBlock(BB)) {
+      BB->eraseFromParent();
+      Builder.SetInsertPoint(ElseBlock);
+    }
+    else
+      Builder.CreateBr(ContBlock);
   }
   
   // Emit the continuation block for code after the if.