[Bug tree-optimization/99502] New: missing -Warray-bounds on partial out of bounds access in C++
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 10 00:58:37 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99502
Bug ID: 99502
Summary: missing -Warray-bounds on partial out of bounds access
in C++
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
The program below triggers two instances of -Warray-bounds when compiled as C
code but only one when compiled as C++. This is a regression introduced in
r11-7563.
$ cat u.C && gcc -O2 -S -Wall u.C
typedef struct A { int i; } A;
char a[sizeof (A) - 1];
void f (A x)
{
A *p = (A*)a;
*p = x; // -Warray-bounds (good)
}
void g (void)
{
A *p = (A*)a;
p->i = 0; // missing warning in C++
}
u.C: In function ‘void f(A)’:
u.C:8:6: warning: array subscript ‘A[0]’ is partly outside array bounds of
‘char [3]’ [-Warray-bounds]
8 | *p = x; // -Warray-bounds (good)
| ~~~^~~
u.C:3:6: note: while referencing ‘a’
3 | char a[sizeof (A) - 1];
| ^
More information about the Gcc-bugs
mailing list