From 2b2f52bccfd2f83ff0ed5e33baabd9f9266132f3 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 12 Apr 2016 17:54:34 +0000 Subject: [PATCH] re PR c++/68722 (internal compiler error: in merge_exception_specifiers, at cp/typeck2.c:2108) /cp 2016-04-12 Paolo Carlini PR c++/68722 * parser.c (cp_parser_cache_defarg): When file ends in default argument simply return error_mark_node. /testsuite 2016-04-12 Paolo Carlini PR c++/68722 * g++.dg/parse/pr68722.C: New. From-SVN: r234909 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 3 +-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/parse/pr68722.C | 9 +++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/parse/pr68722.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ee830a2e7e4..88b6a10bb7b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-04-12 Paolo Carlini + + PR c++/68722 + * parser.c (cp_parser_cache_defarg): When file ends in default + argument simply return error_mark_node. + 2016-04-12 Nathan Sidwell PR c++/70501 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 28e01afc572..00e211e414f 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -27472,8 +27472,7 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi) case CPP_EOF: case CPP_PRAGMA_EOL: error_at (token->location, "file ends in default argument"); - done = true; - break; + return error_mark_node; case CPP_NAME: case CPP_SCOPE: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e49f83c101f..171c69685dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-12 Paolo Carlini + + PR c++/68722 + * g++.dg/parse/pr68722.C: New. + 2016-04-12 Jakub Jelinek PR rtl-optimization/70596 diff --git a/gcc/testsuite/g++.dg/parse/pr68722.C b/gcc/testsuite/g++.dg/parse/pr68722.C new file mode 100644 index 00000000000..44a6213a0a6 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/pr68722.C @@ -0,0 +1,9 @@ +// PR c++/68722 + +class A { + &__loc // { dg-error "" } +} class ios_base { // { dg-error "" } + A _M_ios_locale ios_base(ios_base &) template <_Traits> class basic_ios { // { dg-error "" } +basic_ios basic_ios = operator= // { dg-error "" } + +// { dg-prune-output "file ends in default argument" } -- 2.30.2