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 (""));
      |           ^

Reply via email to