re PR c++/84588 (internal compiler error: Segmentation fault (contains_struct_check()))

/cp
2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84588
	* parser.c (cp_parser_parameter_declaration_list): When the
	entire parameter-declaration-list is erroneous maybe call
	abort_fully_implicit_template.

/testsuite
2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84588
	* g++.dg/cpp1y/pr84588.C: New.

From-SVN: r260050
This commit is contained in:
Paolo Carlini 2018-05-08 19:35:10 +00:00 committed by Paolo Carlini
parent 0e45c664e3
commit 9f171abdbc
4 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84588
* parser.c (cp_parser_parameter_declaration_list): When the
entire parameter-declaration-list is erroneous maybe call
abort_fully_implicit_template.
2018-05-08 Marek Polacek <polacek@redhat.com>
PR c++/85695

View File

@ -21344,6 +21344,8 @@ cp_parser_parameter_declaration_list (cp_parser* parser, bool *is_error)
{
*is_error = true;
parameters = error_mark_node;
if (parser->fully_implicit_function_template_p)
abort_fully_implicit_template (parser);
break;
}

View File

@ -1,3 +1,8 @@
2018-05-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84588
* g++.dg/cpp1y/pr84588.C: New.
2018-05-08 Marek Polacek <polacek@redhat.com>
PR c++/85695

View File

@ -0,0 +1,10 @@
// { dg-do compile { target c++14 } }
// { dg-options "-w" }
struct a {
void b() {}
void c(auto = [] {
if (a a(int auto){}) // { dg-error "two or more data types" }
;
}) {}
};