aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/CodeGenFunction.cpp2
-rw-r--r--test/CodeGen/dostmt.c20
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);
+}
+
+
+