(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
sizeof-array-argument.c
       1  /* PR c/6940 */
       2  /* { dg-do compile } */
       3  
       4  /* Test -Wsizeof-array-argument warning.  */
       5  
       6  typedef int T[2][2];
       7  
       8  int
       9  fn1 (int a[])
      10  {
      11    return sizeof a; /* { dg-warning "on array function parameter" } */
      12  }
      13  
      14  int
      15  fn2 (int x, int b[3])
      16  {
      17    return x + sizeof b; /* { dg-warning "on array function parameter" } */
      18  }
      19  
      20  int
      21  fn3 (int *p)
      22  {
      23    return sizeof p;
      24  }
      25  
      26  int fn4 (int *p);
      27  int
      28  fn4 (int p[])
      29  {
      30    return sizeof p; /* { dg-warning "on array function parameter" } */
      31  }
      32  
      33  int fn5 (int x[]);
      34  int
      35  fn5 (int *x)
      36  {
      37    return sizeof x;
      38  }
      39  
      40  #ifndef __cplusplus
      41  /* C++ doesn't know VLA unspec.  */
      42  int fn6 (int x[*]);
      43  int
      44  fn6 (int x[])
      45  {
      46    return sizeof x; /* { dg-warning "on array function parameter" "" { target c } } */
      47  }
      48  #endif
      49  
      50  int
      51  fn7 (int x[][2])
      52  {
      53    return sizeof x; /* { dg-warning "on array function parameter" } */
      54  }
      55  
      56  int
      57  fn8 (char *x[])
      58  {
      59    return sizeof x; /* { dg-warning "on array function parameter" } */
      60  }
      61  
      62  int
      63  fn9 (char **x)
      64  {
      65    return sizeof x;
      66  }
      67  
      68  #ifndef __cplusplus
      69  int
      70  fn10 (int a, char x[static sizeof a])
      71  {
      72    return sizeof x; /* { dg-warning "on array function parameter" "" { target c } } */
      73  }
      74  
      75  int
      76  fn11 (a)
      77    char a[];
      78  {
      79    return sizeof a; /* { dg-warning "on array function parameter" "" { target c } } */
      80  }
      81  
      82  int
      83  fn12 (a)
      84    char *a;
      85  {
      86    return sizeof a;
      87  }
      88  #endif
      89  
      90  int
      91  fn13 (char (*x)[2])
      92  {
      93    return sizeof x;
      94  }
      95  
      96  int
      97  fn14 (T t)
      98  {
      99    return sizeof t; /* { dg-warning "on array function parameter" } */
     100  }