From: Paolo Carlini Date: Mon, 5 Dec 2011 20:44:50 +0000 (+0000) Subject: re PR c++/51399 ([c++0x] [4.7 Regression] ICE with invalid initializer list) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a9eba00e1b73fe6ac5f6d3dcad4a015a4e8eb4d4;p=gcc.git re PR c++/51399 ([c++0x] [4.7 Regression] ICE with invalid initializer list) /cp 2011-12-05 Paolo Carlini PR c++/51399 * init.c (perform_member_init): Early return if init is error_mark_node. /testsuite 2011-12-05 Paolo Carlini PR c++/51399 * g++.dg/cpp0x/initlist62.C: New. From-SVN: r182025 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ac8e3115539..414f8229338 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-12-05 Paolo Carlini + + PR c++/51399 + * init.c (perform_member_init): Early return if init is error_mark_node. + 2011-12-05 Paolo Carlini PR c++/51414 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 8aa8285fa94..8e28e3b3044 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 bf505cea3f7..c78d3f48808 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-05 Paolo Carlini + + PR c++/51399 + * g++.dg/cpp0x/initlist62.C: New. + 2011-12-05 Thomas Koenig 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 00000000000..cabbcd1db4e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist62.C @@ -0,0 +1,10 @@ +// PR c++/51399 +// { dg-options "-std=c++0x" } + +#include + +struct A +{ + std::initializer_list x[1] = { 0 }; // { dg-error "could not convert" } + A() {} +};