aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CodeGenCXX/partial-init.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2015-09-04 21:39:15 +0000
committerReid Kleckner <rnk@google.com>2015-09-04 21:39:15 +0000
commit5ee4b9a11fb70efbbccb9e717012cb8432e9ea84 (patch)
treedfee2b4c63f7b6623e9d6e025cab8f3fea35cb09 /clang/test/CodeGenCXX/partial-init.cpp
parentbd0ec69e0a31ddcdde147c4e7dd1c323d5beea78 (diff)
downloadllvm-5ee4b9a11fb70efbbccb9e717012cb8432e9ea84.zip
llvm-5ee4b9a11fb70efbbccb9e717012cb8432e9ea84.tar.gz
llvm-5ee4b9a11fb70efbbccb9e717012cb8432e9ea84.tar.bz2
Don't use unreachable as a placeholder, it confuses EmitBlock
This fixes an issue raised in D12412, where we generated invalid IR. Thanks to Vedant Kumar for coming up with the initial work around. Differential Revision: http://reviews.llvm.org/D12412 llvm-svn: 246880
Diffstat (limited to 'clang/test/CodeGenCXX/partial-init.cpp')
-rw-r--r--clang/test/CodeGenCXX/partial-init.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/partial-init.cpp b/clang/test/CodeGenCXX/partial-init.cpp
new file mode 100644
index 0000000..c13b951
--- /dev/null
+++ b/clang/test/CodeGenCXX/partial-init.cpp
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm -std=c++11 -fcxx-exceptions -fexceptions -S -emit-llvm -o - %s | FileCheck %s
+
+namespace std {
+ struct string {
+ const char *p;
+ string(const char *s);
+ ~string();
+ };
+}
+
+struct Bar {
+ int a;
+};
+
+struct Foo {
+ std::string c;
+ Bar d[32];
+};
+
+static Foo table[] = {
+ { "blerg" },
+};
+
+// CHECK: define internal void @__cxx_global_var_init
+// CHECK: invoke void @_ZNSt6stringC1EPKc(
+// CHECK-NOT: unreachable
+// CHECK: br label