Commit a95aef3c by Paolo Carlini Committed by Paolo Carlini

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
parent aef83682
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.
......
......@@ -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
......
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.
2014-01-17 Jeff Law <law@redhat.com>
PR middle-end/57904
......
// PR c++/59270
// { dg-do compile { target c++11 } }
struct A
{
struct B b; // { dg-error "incomplete type" }
};
decltype(A()) a;
// PR c++/58811
struct B
{
struct A a; // { dg-error "incomplete type" }
};
void foo()
{
B();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment