https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98266
Bug ID: 98266 Summary: bogus array subscript is partly outside array bounds on virtual inheritance Product: gcc Version: unknown 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: --- As reported in https://bugzilla.redhat.com/show_bug.cgi?id=1907216, GCC 11 issues a spurious -Warray-bounds on the following code (reduced from the original test case): $ cat rhbz1738791.C && g++ -O2 -S -Wall rhbz1738791.C struct A { virtual ~A() noexcept; const char* s; }; struct B: virtual A { }; struct C: virtual B { }; struct D: virtual A { }; struct E: virtual B, virtual D { E (const char*); }; void f (E); void g_function () { f (E ("")); } rhbz1738791.C: In function ‘void g_function()’: rhbz1738791.C:11:8: warning: array subscript ‘D[1]’ is partly outside array bounds of ‘E [1]’ [-Warray-bounds] 11 | struct D: virtual A { }; | ^ rhbz1738791.C:22:11: note: while referencing ‘<anonymous>’ 22 | f (E ("")); | ^ rhbz1738791.C:11:8: warning: array subscript ‘D[1]’ is partly outside array bounds of ‘E [1]’ [-Warray-bounds] 11 | struct D: virtual A { }; | ^ rhbz1738791.C:22:11: note: while referencing ‘<anonymous>’ 22 | f (E ("")); | ^