diff options
author | Reid Kleckner <rnk@google.com> | 2015-09-04 21:39:15 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2015-09-04 21:39:15 +0000 |
commit | 5ee4b9a11fb70efbbccb9e717012cb8432e9ea84 (patch) | |
tree | dfee2b4c63f7b6623e9d6e025cab8f3fea35cb09 /clang/test/CodeGenCXX/partial-init.cpp | |
parent | bd0ec69e0a31ddcdde147c4e7dd1c323d5beea78 (diff) | |
download | llvm-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.cpp | 27 |
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 |