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();
+ }
+}
+