aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2014-01-17 20:25:01 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2014-01-17 20:25:01 +0000
commita95aef3c126b193ad4f7cf6bed6c40534236bc0b (patch)
treea44fec4e4862e692907a24e3c7eaace881f5c487 /gcc/cp
parentaef836828d33f32ac63d67d0e83180551b5a6fa8 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/cp/init.c3
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