aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/c/ChangeLog5
-rw-r--r--gcc/c/c-parser.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr71362.c10
4 files changed, 21 insertions, 0 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index f0b03d2..3b7feaa 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,5 +1,10 @@
2016-06-06 Marek Polacek <polacek@redhat.com>
+ PR c/71362
+ * c-parser.c (c_parser_direct_declarator): Set location.
+
+2016-06-06 Marek Polacek <polacek@redhat.com>
+
* c-typeck.c (comptypes_internal): Handle comparisons of
INTEGER_TYPE, FIXED_POINT_TYPE, and REAL_TYPE nodes. Don't check
TYPE_REF_CAN_ALIAS_ALL.
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index bca8653..799a473 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -3430,6 +3430,7 @@ c_parser_direct_declarator (c_parser *parser, bool type_seen_p, c_dtr_syn kind,
&& c_parser_next_token_is (parser, CPP_OPEN_SQUARE))
{
struct c_declarator *inner = build_id_declarator (NULL_TREE);
+ inner->id_loc = c_parser_peek_token (parser)->location;
return c_parser_direct_declarator_inner (parser, *seen_id, inner);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 29f5150..e292f54 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-06-06 Marek Polacek <polacek@redhat.com>
+
+ PR c/71362
+ * gcc.dg/pr71362.c: New test.
+
2016-06-06 Jakub Jelinek <jakub@redhat.com>
Patrick Palka <ppalka@gcc.gnu.org>
diff --git a/gcc/testsuite/gcc.dg/pr71362.c b/gcc/testsuite/gcc.dg/pr71362.c
new file mode 100644
index 0000000..fd9cd6a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr71362.c
@@ -0,0 +1,10 @@
+/* PR c/71362 */
+/* { dg-do compile } */
+
+extern void foo (int[-1]); /* { dg-error "21:size of unnamed array is negative" } */
+
+int
+bar (void)
+{
+ 123 + sizeof (int[-1]); /* { dg-error "20:size of unnamed array is negative" } */
+}