(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c/
parloops-exit-first-loop-alt-2.c
       1  /* { dg-do run } */
       2  /* { dg-additional-options "-ftree-parallelize-loops=2" } */
       3  
       4  /* Constant bound, vector addition.  */
       5  
       6  #include <stdio.h>
       7  #include <stdlib.h>
       8  
       9  #define N 1000
      10  
      11  unsigned int a[N];
      12  unsigned int b[N];
      13  unsigned int c[N];
      14  
      15  void __attribute__((noclone,noinline))
      16  f (void)
      17  {
      18    int i;
      19  
      20    for (i = 0; i < N; ++i)
      21      c[i] = a[i] + b[i];
      22  }
      23  
      24  int
      25  main (void)
      26  {
      27    int i, j;
      28  
      29    /* Complexify loop to inhibit parloops.  */
      30    for (j = 0; j < 100; ++j)
      31      for (i = 0; i < 10; i++)
      32        {
      33  	int k = i + (10 * j);
      34  	a[k] = k;
      35  	b[k] = (k * 3) % 7;
      36  	c[k] = k * 2;
      37        }
      38  
      39    f ();
      40  
      41    for (i = 0; i < N; i++)
      42      {
      43        unsigned int actual = c[i];
      44        unsigned int expected = i + ((i * 3) % 7);
      45        if (actual != expected)
      46  	abort ();
      47      }
      48  
      49    return 0;
      50  }