https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100571
Bug ID: 100571
Summary: bogus -Wstringop-overflow with VLA of elements larger
than byte
Product: gcc
Version: 10.3.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
This is probably a duplicate of an existing bug already fixed in GCC 11 but not
in GCC 10. A recent enhancement to Glibc to add attribute access to a bunch of
APIs has triggered a couple of false positives in the test suite, including:
https://sourceware.org/pipermail/libc-alpha/2021-May/125987.html
and
https://sourceware.org/pipermail/libc-alpha/2021-May/126250.html
A simple test case for the problem is as follows:
$ cat t.c && gcc -O2 -S -Wall t.c
__attribute__ ((access (read_only, 1, 2))) void f (int *, int);
__SIZE_TYPE__ n;
void g (void)
{
int a[n];
a[0] = 0;
f (a, n);
}
t.t: In function 'g':
t.c:9:3: warning: 'f' specified size 18446744073709551615 exceeds maximum
object size 9223372036854775807 [-Wstringop-overflow=]
9 | f (a, n);
| ^~~~~~~~
t.t:1:49: note: in a call to function 'f' declared with attribute 'read_only
(1, 2)'
1 | __attribute__ ((access (read_only, 1, 2))) void f (int *, int);
| ^