blob: eedfceec2cfc8502e2779b414cb7888446691313 [file] [log] [blame]
/* PR c/6940 */
/* { dg-do compile } */
/* Test -Wsizeof-array-argument warning. */
typedef int T[2][2];
int
fn1 (int a[])
{
return sizeof a; /* { dg-warning "on array function parameter" } */
}
int
fn2 (int x, int b[3])
{
return x + sizeof b; /* { dg-warning "on array function parameter" } */
}
int
fn3 (int *p)
{
return sizeof p;
}
int fn4 (int *p);
int
fn4 (int p[])
{
return sizeof p; /* { dg-warning "on array function parameter" } */
}
int fn5 (int x[]);
int
fn5 (int *x)
{
return sizeof x;
}
#ifndef __cplusplus
/* C++ doesn't know VLA unspec. */
int fn6 (int x[*]);
int
fn6 (int x[])
{
return sizeof x; /* { dg-warning "on array function parameter" "" { target c } } */
}
#endif
int
fn7 (int x[][2])
{
return sizeof x; /* { dg-warning "on array function parameter" } */
}
int
fn8 (char *x[])
{
return sizeof x; /* { dg-warning "on array function parameter" } */
}
int
fn9 (char **x)
{
return sizeof x;
}
#ifndef __cplusplus
int
fn10 (int a, char x[static sizeof a])
{
return sizeof x; /* { dg-warning "on array function parameter" "" { target c } } */
}
int
fn11 (a)
char a[];
{
return sizeof a; /* { dg-warning "on array function parameter" "" { target c } } */
}
int
fn12 (a)
char *a;
{
return sizeof a;
}
#endif
int
fn13 (char (*x)[2])
{
return sizeof x;
}
int
fn14 (T t)
{
return sizeof t; /* { dg-warning "on array function parameter" } */
}