(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
pr45784.c
       1  /* PR c/45784 */
       2  /* { dg-do run } */
       3  
       4  void
       5  foo (int n)
       6  {
       7    char *p, vla[2 * n];
       8    int i;
       9    #pragma omp parallel for
      10    for (p = vla; p < vla + (sizeof (vla) / sizeof (vla[0])); p++)
      11      *p = ' ';
      12    #pragma omp parallel for
      13    for (i = 0; i < 2 * n; i++)
      14      if (vla[i] != ' ')
      15        __builtin_abort ();
      16  }
      17  
      18  void
      19  bar (int n)
      20  {
      21    char *p, vla1[n], vla2[n * 2], vla3[n * 3], vla4[n * 4];
      22    int i;
      23    __builtin_memset (vla4, ' ', n * 4);
      24    #pragma omp parallel for
      25    for (p = vla4 + sizeof (vla1); p < vla4 + sizeof (vla3) - sizeof (vla2) + sizeof (vla1); p += sizeof (vla4) / sizeof (vla4))
      26      p[0] = '!';
      27    #pragma omp parallel for
      28    for (i = 0; i < n * 4; i++)
      29      if (vla4[i] != ((i >= n && i < 2 * n) ? '!' : ' '))
      30        __builtin_abort ();
      31  }
      32  
      33  int
      34  main ()
      35  {
      36    volatile int n;
      37    n = 128;
      38    foo (n);
      39    bar (n);
      40    return 0;
      41  }