/cp
2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51223
* call.c (build_over_call): Check for error_mark_node as
TREE_VALUE when default arguments are processed.
/testsuite
2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51223
* g++.dg/parse/crash58.C: New.
From-SVN: r183472
+2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51223
+ * call.c (build_over_call): Check for error_mark_node as
+ TREE_VALUE when default arguments are processed.
+
2012-01-23 Jason Merrill <jason@redhat.com>
PR c++/51930
/* Default arguments */
for (; parm && parm != void_list_node; parm = TREE_CHAIN (parm), i++)
- argarray[j++] = convert_default_arg (TREE_VALUE (parm),
- TREE_PURPOSE (parm),
- fn, i - is_method);
+ {
+ if (TREE_VALUE (parm) == error_mark_node)
+ return error_mark_node;
+ argarray[j++] = convert_default_arg (TREE_VALUE (parm),
+ TREE_PURPOSE (parm),
+ fn, i - is_method);
+ }
+
/* Ellipsis */
for (; arg_index < VEC_length (tree, args); ++arg_index)
{
+2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51223
+ * g++.dg/parse/crash58.C: New.
+
2012-01-24 Jakub Jelinek <jakub@redhat.com>
PR target/51957
--- /dev/null
+// PR c++/51223
+
+struct A
+{
+ A foo(void i = 0); // { dg-error "incomplete type|invalid use" }
+};
+
+void bar()
+{
+ A().foo();
+}
+
+A A::foo(void i) // { dg-error "incomplete type|invalid use" }
+{
+ return A();
+}