blob: a93da03756084b1905ea0f3068a6ed28b4fed85e [file] [log] [blame]
/* PR middle-end/101601 - [12 Regression] -Warray-bounds triggers error:
arrays of functions are not meaningful
{ dg-do compile }
{ dg-options "-O2 -Wall" } */
typedef void Fvv (void);
extern Fvv* pf; // { dg-message "'pf'" }
void f (...);
void test_funptr (void)
{
f (&pf);
f (&pf + 1);
f (&pf + 2); // { dg-warning "subscript 2 is outside array bounds of 'void \\\(\\\* ?\\\[1]\\\)\\\(\\\)'" }
}
typedef int Fii_ (int, ...);
extern Fii_* pfa[3]; // { dg-message "'pfa'" }
void test_funptr_array (void)
{
f (pfa);
f (pfa + 1);
f (pfa + 2);
f (pfa + 3);
f (pfa + 4); // { dg-warning "subscript 4 is outside array bounds of 'int \\\(\\\* ?\\\[3]\\\)\\\(int, ...\\\)'" }
}
struct A;
typedef void (A::*MFvv)(void);
MFvv pmf;
void test_memfunptr (void)
{
f (&pmf);
f (&pmf + 1);
f (&pmf + 2); // { dg-warning "subscript 2 is outside array bounds of 'void \\\(A::\\\* ?\\\[1]\\\)\\\(\\\)'" }
}
typedef int (A::*MFii)(int);
MFii pmfa[4];
void test_memfunptr_array (void)
{
f (pmfa);
f (pmfa + 1);
f (pmfa + 2);
f (pmfa + 3);
f (pmfa + 4);
f (pmfa + 5); // { dg-warning "subscript 5 is outside array bounds of 'int \\\(A::\\\* ?\\\[4]\\\)\\\(int\\\)'" }
}