aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-09-20 17:16:55 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-09-20 17:16:55 +0200
commit590b62e90d6d86e68442ffa608c7c6e5653736d5 (patch)
tree229e839167623726277acaa76b17ab8cf5af96ab
parent377f30c00f3b8b8b0da748dbb9d988fa67a8ec2f (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/cp/parser.c8
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C5
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 '...'" }