]> granicus.if.org Git - clang/commitdiff
Emit basic block for switch body; fixes PR2307.
authorEli Friedman <eli.friedman@gmail.com>
Mon, 12 May 2008 16:08:04 +0000 (16:08 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Mon, 12 May 2008 16:08:04 +0000 (16:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50968 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGStmt.cpp
test/CodeGen/switch.c

index d804ee6665fd44587316e9663507a292825e5857..7986b4a11325295287518262c386a7756f240b38 100644 (file)
@@ -499,6 +499,9 @@ void CodeGenFunction::EmitSwitchStmt(const SwitchStmt &S) {
   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;
index a21505ef89cf8f5f088a4d09c7ecf60bea6fbcc2..056337465bc3d71b1aff0d841989e2f848067095 100644 (file)
@@ -74,3 +74,14 @@ void foo5(){
     }
 }
 
+void foo6(){
+    switch(0){
+    }
+}
+
+void foo7(){
+    switch(0){
+      foo7();
+    }
+}
+