diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/init.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist62.C | 10 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ac8e311..414f822 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2011-12-05 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/51399 + * init.c (perform_member_init): Early return if init is error_mark_node. + +2011-12-05 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/51414 * semantics.c (finish_underlying_type): Use %qT, not %qE for the error message. diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 8aa8285..8e28e3b 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -542,6 +542,9 @@ perform_member_init (tree member, tree init) } } + if (init == error_mark_node) + return; + /* Effective C++ rule 12 requires that all data members be initialized. */ if (warn_ecpp && init == NULL_TREE && TREE_CODE (type) != ARRAY_TYPE) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bf505ce..c78d3f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-05 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51399 + * g++.dg/cpp0x/initlist62.C: New. + 2011-12-05 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/51338 diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist62.C b/gcc/testsuite/g++.dg/cpp0x/initlist62.C new file mode 100644 index 0000000..cabbcd1d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist62.C @@ -0,0 +1,10 @@ +// PR c++/51399 +// { dg-options "-std=c++0x" } + +#include <initializer_list> + +struct A +{ + std::initializer_list<int> x[1] = { 0 }; // { dg-error "could not convert" } + A() {} +}; |