Commit f25e33fa by Martin Sebor Committed by Martin Sebor

PR c/93132 - bogus 'attribute((access))' warning when size-index is specified

gcc/c-family/ChangeLog:

	PR c/93132
	* c-attribs.c (append_access_attrs): Validate against the translated
	access string rather than the human-readable representation.

gcc/testsuite/ChangeLog:

	PR c/93132
	* gcc.dg/attr-access-read-only-2.c: New test.

From-SVN: r280124
parent b2f5b380
2020-01-10 Martin Sebor <msebor@redhat.com>
PR c/93132
* c-attribs.c (append_access_attrs): Validate against the translated
access string rather than the human-readable representation.
2020-01-01 Jakub Jelinek <jakub@redhat.com> 2020-01-01 Jakub Jelinek <jakub@redhat.com>
Update copyright years. Update copyright years.
......
...@@ -3970,14 +3970,15 @@ append_access_attrs (tree t, tree attrs, const char *attrstr, ...@@ -3970,14 +3970,15 @@ append_access_attrs (tree t, tree attrs, const char *attrstr,
return NULL_TREE; return NULL_TREE;
} }
if (n2 && strncmp (attrstr + n1 + 1, pos + n1, n2)) if (n2 && strncmp (attrspec + n1 + 1, pos + n1, n2))
{ {
/* Mismatch in the value of the size argument. */ /* Mismatch in the value of the size argument. */
auto_diagnostic_group d; auto_diagnostic_group d;
if (warning (OPT_Wattributes, if (warning (OPT_Wattributes,
"attribute %qs mismatch positional argument " "attribute %qs mismatched positional argument "
"values %i and %i", "values %i and %i",
attrstr, atoi (attrstr + n1 + 1), atoi (pos + n1)) attrstr, atoi (attrspec + n1 + 1) + 1,
atoi (pos + n1) + 1)
&& DECL_P (t)) && DECL_P (t))
inform (DECL_SOURCE_LOCATION (t), inform (DECL_SOURCE_LOCATION (t),
"previous declaration here"); "previous declaration here");
......
2020-01-10 Martin Sebor <msebor@redhat.com>
PR c/93132
* gcc.dg/attr-access-read-only-2.c: New test.
2020-01-10 Richard Sandiford <richard.sandiford@arm.com> 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
* gcc.target/aarch64/sve/sel_1.c: Use SVE types for the arguments and * gcc.target/aarch64/sve/sel_1.c: Use SVE types for the arguments and
......
/* PR c/93132 - bogus 'attribute((access))' warning when size-index
is specified
{ dg-do compile }
{ dg-options "-Wall" } */
void __attribute__ ((access (read_only, 1, 5)))
f (void*, int, int, int, int); // { dg-message "previous declaration" }
void __attribute__ ((access (read_only, 1, 3)))
f (void*, int, int, int, int); // { dg-warning "attribute 'access\\\(read_only, 1, 3\\\)' mismatched positional argument values 3 and 5" }
void __attribute__ ((access (read_only, 1, 4)))
f (void*, int, int, int, int); // { dg-warning "attribute 'access\\\(read_only, 1, 4\\\)' mismatched positional argument values 4 and 5" }
void __attribute__ ((access (read_only, 1, 5)))
f (void*, int, int, int, int);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment