diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-09-20 17:16:55 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-09-20 17:16:55 +0200 |
commit | 590b62e90d6d86e68442ffa608c7c6e5653736d5 (patch) | |
tree | 229e839167623726277acaa76b17ab8cf5af96ab | |
parent | 377f30c00f3b8b8b0da748dbb9d988fa67a8ec2f (diff) | |
download | gcc-590b62e90d6d86e68442ffa608c7c6e5653736d5.zip gcc-590b62e90d6d86e68442ffa608c7c6e5653736d5.tar.gz gcc-590b62e90d6d86e68442ffa608c7c6e5653736d5.tar.bz2 |
re PR c++/77637 (ICE on x86_64-linux-gnu (Segmentation fault, tree_check, cp_parser_std_attribute_list...))
PR c++/77637
* parser.c (cp_parser_std_attribute_list): Reject ... without
preceding attribute.
* g++.dg/cpp0x/gen-attrs-62.C: New test.
From-SVN: r240265
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C | 5 |
4 files changed, 20 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6aa79a9..35ad431 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-09-20 Jakub Jelinek <jakub@redhat.com> + + PR c++/77637 + * parser.c (cp_parser_std_attribute_list): Reject ... without + preceding attribute. + 2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c++/77434 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c03b9c2..9a20a5f 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -24221,8 +24221,12 @@ cp_parser_std_attribute_list (cp_parser *parser, tree attr_ns) if (token->type == CPP_ELLIPSIS) { cp_lexer_consume_token (parser->lexer); - TREE_VALUE (attribute) - = make_pack_expansion (TREE_VALUE (attribute)); + if (attribute == NULL_TREE) + error_at (token->location, + "expected attribute before %<...%>"); + else + TREE_VALUE (attribute) + = make_pack_expansion (TREE_VALUE (attribute)); token = cp_lexer_peek_token (parser->lexer); } if (token->type != CPP_COMMA) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d434027b..b4524f0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2016-09-20 Jakub Jelinek <jakub@redhat.com> + PR c++/77637 + * g++.dg/cpp0x/gen-attrs-62.C: New test. + PR middle-end/77624 * c-c++-common/pr77624-1.c: New test. * c-c++-common/pr77624-2.c: New test. diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C new file mode 100644 index 0000000..5bd8778 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C @@ -0,0 +1,5 @@ +// PR c++/77637 +// { dg-do compile { target c++11 } } + +int [[...]] a; // { dg-error "expected attribute before '...'" } +int [[,,...]] b; // { dg-error "expected attribute before '...'" } |