aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGenCXX/static-init.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2012-03-09 03:27:46 +0000
committerEli Friedman <eli.friedman@gmail.com>2012-03-09 03:27:46 +0000
commit71cba34b6e2d3fb81860bd2176ab7003eaf2e918 (patch)
tree451e03ad0411aff62588e649578bf0c631d8b618 /test/CodeGenCXX/static-init.cpp
parent8b42ab718d89ce458145118ec2071edd28b66a9a (diff)
Make sure we update the static local decl address map when we are forced to rebuild a global because of the initializer. <rdar://problem/10957867>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152372 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/static-init.cpp')
-rw-r--r--test/CodeGenCXX/static-init.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/CodeGenCXX/static-init.cpp b/test/CodeGenCXX/static-init.cpp
index 2db54c2c8b..a96cb7ac8e 100644
--- a/test/CodeGenCXX/static-init.cpp
+++ b/test/CodeGenCXX/static-init.cpp
@@ -63,3 +63,19 @@ namespace test1 {
// Make sure we emit the initializer correctly for the following:
char base_req[] = { "foo" };
+
+namespace union_static_local {
+ // CHECK: define internal void @_ZZN18union_static_local4testEvEN1c4mainEv
+ // CHECK: call void @_ZN18union_static_local1fEPNS_1xE(%"union.union_static_local::x"* bitcast ({ [2 x i8*] }* @_ZZN18union_static_local4testEvE3foo to %"union.union_static_local::x"*))
+ union x { long double y; const char *x[2]; };
+ void f(union x*);
+ void test() {
+ static union x foo = { .x = { "a", "b" } };
+ struct c {
+ static void main() {
+ f(&foo);
+ }
+ };
+ c::main();
+ }
+}