(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
autopar/
reduc-2short.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops2-details -fdump-tree-optimized" } */
       3  
       4  #include <stdarg.h>
       5  #include <stdlib.h>
       6  
       7  #define N 1600
       8  #define DIFF 242
       9  
      10  short b[N] = {1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
      11  short c[N] = {1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
      12  
      13  __attribute__ ((noinline))
      14  void main1 (short x, short max_result, short min_result)
      15  {
      16    int i;
      17    short diff = 2;
      18    short max = x;
      19    short min = x;
      20  
      21    for (i = 0; i < N; i++) {
      22      diff += (short)(b[i] - c[i]);
      23    }
      24    for (i = 0; i < N; i++) {
      25      max = max < c[i] ? c[i] : max;
      26    }
      27  
      28    for (i = 0; i < N; i++) {
      29      min = min > c[i] ? c[i] : min;
      30    }
      31  
      32    /* check results:  */
      33    if (diff != DIFF)
      34      abort ();
      35    if (max != max_result)
      36      abort ();
      37    if (min != min_result)
      38      abort ();
      39  }
      40  
      41  void __attribute__((noinline))
      42    __attribute__((optimize ("-ftree-parallelize-loops=0")))
      43  init_arrays ()
      44   {
      45     int i;
      46  
      47     for (i=16; i<N; i++)
      48       {
      49         b[i] = 1;
      50         c[i] = 1;
      51       }
      52  }
      53  
      54  int main (void)
      55  { 
      56    init_arrays();
      57    main1 (100, 100, 1);
      58    main1 (0, 15, 0);
      59    return 0;
      60  }
      61  
      62  /* { dg-final { scan-tree-dump-times "Detected reduction" 2 "parloops2" } } */
      63  /* { dg-final { scan-tree-dump-times "Detected reduction" 3 "parloops2" { xfail *-*-* } } } */
      64  
      65  /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 2 "parloops2" } } */
      66  /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 3 "parloops2" { xfail *-*-* } } } */