diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist-opt6.C | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt6.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt6.C new file mode 100644 index 0000000..8019289 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt6.C @@ -0,0 +1,26 @@ +// PR c++/118673 +// { dg-do run { target c++11 } } + +#include <initializer_list> + +struct ArrayRef { + const int *Data = nullptr; + ArrayRef(const int &OneElt) : Data(&OneElt) {} +}; + +struct Vec +{ + ArrayRef Elts[1]; + Vec(std::initializer_list<ArrayRef> IL) + : Elts{*IL.begin()} + { } +}; + +[[gnu::noinline]] Vec fn() { + static const auto extension = 42; + return {extension}; +} +int main() { + auto t = fn(); + if (t.Elts[0].Data[0] != 42) __builtin_abort(); +} |