From: Chris Lattner Date: Mon, 28 Feb 2011 01:06:02 +0000 (+0000) Subject: remove a bogus assertion, add a comment. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=035287d73947320d2ff65b7d9a5c3d990427eee3;p=clang remove a bogus assertion, add a comment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126603 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 70cda5a225..c67d1d1b0d 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -857,9 +857,6 @@ static CSFC_Result CollectStatementsForCase(const Stmt *S, const SwitchCase *Case, bool &FoundCase, llvm::SmallVectorImpl &ResultStmts) { - assert((!FoundCase || Case == 0) && - "Can't be looking for the case if we already found it!"); - // If this is a null statement, just succeed. if (S == 0) return Case ? CSFC_Success : CSFC_FallThrough; @@ -942,6 +939,7 @@ static CSFC_Result CollectStatementsForCase(const Stmt *S, // just verify it doesn't have labels, which would make it invalid to elide. if (Case) { if (CodeGenFunction::ContainsLabel(S, true) || + // Don't skip over DeclStmts, which can be used even if skipped over. isa(S)) return CSFC_Failure; return CSFC_Success; diff --git a/test/CodeGen/switch-dce.c b/test/CodeGen/switch-dce.c index 3276737793..95c5e03633 100644 --- a/test/CodeGen/switch-dce.c +++ b/test/CodeGen/switch-dce.c @@ -167,3 +167,16 @@ void test9(int i) { } } + +int test10(void) { + switch(8) { + case 8: + break; + case 4: + break; + default: + dead(); + } + + return 0; +}