diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2014-01-17 20:25:01 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2014-01-17 20:25:01 +0000 |
commit | a95aef3c126b193ad4f7cf6bed6c40534236bc0b (patch) | |
tree | a44fec4e4862e692907a24e3c7eaace881f5c487 /gcc/cp | |
parent | aef836828d33f32ac63d67d0e83180551b5a6fa8 (diff) | |
download | gcc-a95aef3c126b193ad4f7cf6bed6c40534236bc0b.zip gcc-a95aef3c126b193ad4f7cf6bed6c40534236bc0b.tar.gz gcc-a95aef3c126b193ad4f7cf6bed6c40534236bc0b.tar.bz2 |
re PR c++/59270 ([c++11] ICE with decltype of a broken class)
/cp
2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59270
PR c++/58811
* init.c (build_value_init_noctor): Don't pass error_mark_node to
build_value_init.
/testsuite
2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59270
PR c++/58811
* g++.dg/cpp0x/decltype-incomplete1.C: New.
* g++.dg/init/pr58811.C: Likewise.
From-SVN: r206731
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/init.c | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 45a6c97..0508ea0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,12 @@ 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/59270 + PR c++/58811 + * init.c (build_value_init_noctor): Don't pass error_mark_node to + build_value_init. + +2014-01-17 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/59269 * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT only when errorcount == 0. diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 931b5c8..194a797 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -400,6 +400,9 @@ build_value_init_noctor (tree type, tsubst_flags_t complain) ftype = TREE_TYPE (field); + if (ftype == error_mark_node) + continue; + /* We could skip vfields and fields of types with user-defined constructors, but I think that won't improve performance at all; it should be simpler in general just |