Emit basic block for switch body; fixes PR2307.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50968 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp
index d804ee6..7986b4a 100644
--- a/lib/CodeGen/CGStmt.cpp
+++ b/lib/CodeGen/CGStmt.cpp
@@ -499,6 +499,9 @@
   llvm::BasicBlock *NextBlock = llvm::BasicBlock::Create("after.sw");
   SwitchInsn = Builder.CreateSwitch(CondV, NextBlock);
 
+  // Create basic block for body of switch
+  StartBlock("body.sw");
+
   // All break statements jump to NextBlock. If BreakContinueStack is non empty
   // then reuse last ContinueBlock.
   llvm::BasicBlock *ContinueBlock = NULL;
diff --git a/test/CodeGen/switch.c b/test/CodeGen/switch.c
index a21505e..0563374 100644
--- a/test/CodeGen/switch.c
+++ b/test/CodeGen/switch.c
@@ -74,3 +74,14 @@
     }
 }
 
+void foo6(){
+    switch(0){
+    }
+}
+
+void foo7(){
+    switch(0){
+      foo7();
+    }
+}
+