(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vla-13.c
       1  /* Test for VLA size evaluation; see PR 35198.  */
       2  /* Origin: Joseph Myers <joseph@codesourcery.com> */
       3  /* { dg-do run } */
       4  /* { dg-options "-std=c99" } */
       5  
       6  extern void exit (int);
       7  extern void abort (void);
       8  
       9  int i;
      10  void *p;
      11  
      12  void
      13  f1 (void *x, int j)
      14  {
      15    p = (int (*)[++i])x;
      16    if (i != j)
      17      abort ();
      18  }
      19  
      20  void
      21  f1c (void *x, int j)
      22  {
      23    p = (int (*)[++i]){x};
      24    if (i != j)
      25      abort ();
      26  }
      27  
      28  void
      29  f2 (void *x, int j)
      30  {
      31    x = (void *)(int (*)[++i])p;
      32    if (i != j)
      33      abort ();
      34  }
      35  
      36  void
      37  f2c (void *x, int j)
      38  {
      39    x = (void *)(int (*)[++i]){p};
      40    if (i != j)
      41      abort ();
      42  }
      43  
      44  void
      45  f3 (void *x, int j)
      46  {
      47    (void)(int (*)[++i])p;
      48    if (i != j)
      49      abort ();
      50  }
      51  
      52  void
      53  f3c (void *x, int j)
      54  {
      55    (void)(int (*)[++i]){p};
      56    if (i != j)
      57      abort ();
      58  }
      59  
      60  void
      61  f4 (void *x, int j)
      62  {
      63    (int (*)[++i])p;
      64    (int (*)[++i])p;
      65    if (i != j)
      66      abort ();
      67  }
      68  
      69  void
      70  f4c (void *x, int j)
      71  {
      72    (int (*)[++i]){p};
      73    (int (*)[++i]){p};
      74    if (i != j)
      75      abort ();
      76  }
      77  
      78  void
      79  f5c (void *x, int j, int k)
      80  {
      81    (++i, f3c (x, j), (int (*)[++i]){p});
      82    if (i != k)
      83      abort ();
      84  }
      85  
      86  int
      87  main (void)
      88  {
      89    f1 (p, 1);
      90    f2 (p, 2);
      91    f3 (p, 3);
      92    f4 (p, 5);
      93    f1c (p, 6);
      94    f2c (p, 7);
      95    f3c (p, 8);
      96    f4c (p, 10);
      97    f5c (p, 12, 13);
      98    exit (0);
      99  }