diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2018-05-08 19:35:10 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2018-05-08 19:35:10 +0000 |
commit | 9f171abdbcdb944e317ddee480d62b4dc7ce6cbf (patch) | |
tree | 225077e133123059b64fd30b9226046954809ee9 /gcc | |
parent | 0e45c664e3f08eac144e82918a38174873ec176d (diff) | |
download | gcc-9f171abdbcdb944e317ddee480d62b4dc7ce6cbf.zip gcc-9f171abdbcdb944e317ddee480d62b4dc7ce6cbf.tar.gz gcc-9f171abdbcdb944e317ddee480d62b4dc7ce6cbf.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/parser.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1y/pr84588.C | 10 |
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d80c15d..aa42de2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index f8ecf03..59829f3 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3bfeb89..68c0033 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/g++.dg/cpp1y/pr84588.C b/gcc/testsuite/g++.dg/cpp1y/pr84588.C new file mode 100644 index 0000000..9d7f902 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/pr84588.C @@ -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" } + ; + }) {} +}; |