diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2012-02-25 20:51:20 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2012-02-25 20:51:20 +0000 |
commit | 19b1a6eb2c90fab7cefe74bea5b6de490b65ac9d (patch) | |
tree | 1a0f6ea234bd4d6a3d4e8a523d0aad37d967ebba /test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp | |
parent | babcf9d04f4ed9d7ac96812e42c9e8fc0f1ae2c2 (diff) |
CodeGen support for global variables of type std::initializer_list<X>.
This emits a backing array with internal linkage and fills it with data,
then has the initializer_list point at the array. Dynamic initialization
and global destructors are correctly supported.
What doesn't work is nested initializer_lists. I have no idea how to
get them to work, either. However, these should be very rare, and so
I'll just call it a known bug and declare generalized initializers
DONE!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151457 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp')
-rw-r--r-- | test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp b/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp index 3ab44e5712..c533e453a5 100644 --- a/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp +++ b/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp @@ -32,6 +32,10 @@ namespace std { }; } +// CHECK: @_ZL25globalInitList1__initlist = internal global [3 x i32] [i32 1, i32 2, i32 3] +// CHECK: @globalInitList1 = global {{[^ ]+}} { i32* getelementptr inbounds ([3 x i32]* @_ZL25globalInitList1__initlist, {{[^)]*}}), i32* +std::initializer_list<int> globalInitList1 = {1, 2, 3}; + void fn1(int i) { // CHECK: define void @_Z3fn1i // temporary array |