From 1e9660e1fb11efb7e65799bc145c0e2b6f3562be Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 25 Jul 2008 23:40:10 +0000 Subject: [PATCH] Fix rdar://6103124, the only dummy blocks are ones without names. Named blocks are important part of control flow structures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54078 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CodeGenFunction.cpp | 2 +- test/CodeGen/dostmt.c | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/CodeGen/CodeGenFunction.cpp b/lib/CodeGen/CodeGenFunction.cpp index ff46fa69c3..679a0f7404 100644 --- a/lib/CodeGen/CodeGenFunction.cpp +++ b/lib/CodeGen/CodeGenFunction.cpp @@ -148,7 +148,7 @@ void CodeGenFunction::GenerateCode(const FunctionDecl *FD) { /// isDummyBlock - Return true if BB is an empty basic block /// with no predecessors. bool CodeGenFunction::isDummyBlock(const llvm::BasicBlock *BB) { - if (BB->empty() && pred_begin(BB) == pred_end(BB)) + if (BB->empty() && pred_begin(BB) == pred_end(BB) && !BB->hasName()) return true; return false; } diff --git a/test/CodeGen/dostmt.c b/test/CodeGen/dostmt.c index b721974dc5..63547da328 100644 --- a/test/CodeGen/dostmt.c +++ b/test/CodeGen/dostmt.c @@ -1,7 +1,7 @@ -// RUN: clang %s -emit-llvm +// RUN: clang %s -emit-llvm -o - int bar(); -int foo() { +int test0() { int i; i = 1 + 2; do { @@ -12,7 +12,7 @@ int foo() { } -int foo1() { +int test1() { int i; i = 1 + 2; do { @@ -25,7 +25,7 @@ int foo1() { } -int foo2() { +int test2() { int i; i = 1 + 2; do { @@ -38,7 +38,7 @@ int foo2() { } -int foo3() { +int test3() { int i; i = 1 + 2; do { @@ -50,7 +50,7 @@ int foo3() { } -int foo4() { +int test4() { int i; i = 1 + 2; do { @@ -60,3 +60,11 @@ int foo4() { } while(0); return i; } + +// rdar://6103124 +void test5() { + do { break; } while(0); +} + + + -- 2.40.0