https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99129
Bug ID: 99129 Summary: missing -Warray-bounds accessing a zero-length member array of a local struct with a cast Product: gcc Version: 11.0 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: --- -Warray-bounds is issued only for the first out of bounds access in the test case below. The same bug in h() is not diagnosed. $ cat t.c && gcc -O2 -S -Wall t.c void f (void*, ...); int g (int n) { struct { int i, a[0]; } s; f (&s); return s.a[n]; // -Warray-bounds (good) } int h (int n) { struct { int i, a[0]; } s; f (&s); return ((int*)s.a)[n]; // missing warning } t.c: In function ‘g’: t.c:11:13: warning: array subscript n is outside array bounds of ‘int[0]’ [-Warray-bounds] 11 | return s.a[n]; // -Warray-bounds (good) | ~~~^~~ t.c:6:12: note: while referencing ‘a’ 6 | int i, a[0]; | ^ t.c:7:5: note: defined here ‘s’ 7 | } s; | ^