blob: f5ebc3dd4b2d723482aee1fed45aa2e8b1a85ee3 [file] [log] [blame]
/* PR c/50584 - No warning for passing small array to C99 static array
declarator
Verify that out-of-bounds accesses to array arguments are diagnosed,
both to ordinary array parameters with constant bounds and to array
parameters declared static. This is the converse of what PR 50584
asks for.
{ dg-do compile }
{ dg-options "-O2 -Wall -Warray-parameter -Wno-vla-parameter" } */
#define NOIPA __attribute__ ((noipa))
void sink (void*, ...);
#define T(...) sink (0, __VA_ARGS__)
NOIPA void fca1 (char a[1])
{
T (a[0]);
T (a[1]); // { dg-warning "-Warray-bounds" }
}
NOIPA void fcas1 (char a[static 1])
{
T (a[0]);
T (a[1]); // { dg-warning "-Warray-bounds" }
}
NOIPA void fca2 (char a[2])
{
T (a[0]); T (a[1]);
T (a[2]); // { dg-warning "-Warray-bounds" }
}
NOIPA void fcas2 (char a[static 2])
{
T (a[0]); T (a[1]);
T (a[2]); // { dg-warning "-Warray-bounds" }
}
NOIPA void fca3 (char a[3])
{
T (a[0]); T (a[1]); T (a[2]);
T (a[3]); // { dg-warning "-Warray-bounds" }
}
NOIPA void fcas3 (char a[static 3])
{
T (a[0]); T (a[1]); T (a[2]);
T (a[3]); // { dg-warning "-Warray-bounds" }
}
NOIPA void fca1_1 (char a[1][1])
{
T (a[0][0]);
T (a[0][1]); // { dg-warning "-Warray-bounds" }
}