From: Eli Friedman Date: Mon, 12 May 2008 16:08:04 +0000 (+0000) Subject: Emit basic block for switch body; fixes PR2307. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d28a80d64616b66c91d28bb4c08ca2d8c594de4e;p=clang 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 d804ee6665..7986b4a113 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -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; diff --git a/test/CodeGen/switch.c b/test/CodeGen/switch.c index a21505ef89..056337465b 100644 --- a/test/CodeGen/switch.c +++ b/test/CodeGen/switch.c @@ -74,3 +74,14 @@ void foo5(){ } } +void foo6(){ + switch(0){ + } +} + +void foo7(){ + switch(0){ + foo7(); + } +} +