| /* PR middle-end/98266 - bogus array subscript is partly outside array |
| bounds on virtual inheritance |
| { dg-do compile } |
| { dg-options "-O2 -Wall" } */ |
| |
| #if __cplusplus < 201103L |
| // This matters for the test case. |
| # define noexcept throw () |
| #endif |
| |
| struct A |
| { |
| virtual ~A () noexcept; |
| const char *s; |
| }; |
| |
| struct B: virtual A { }; |
| struct C: virtual A { }; // { dg-bogus "\\\[-Warray-bounds" } |
| |
| struct D: virtual B, virtual C |
| { |
| D (const char*); |
| }; |
| |
| void sink (void*); |
| void sink (D); |
| |
| |
| // Verify that accesses to the table aren't diagnosed. |
| void test_vtbl () |
| { |
| sink (D ("")); |
| } |