(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-aggressive-1.c
       1  /* { dg-require-effective-target vect_condition } */
       2  /* { dg-require-effective-target vect_simd_clones } */
       3  /* { dg-additional-options "-fopenmp-simd" } */
       4  
       5  #include "tree-vect.h"
       6  
       7  #define N 64
       8  int a[N];
       9  int c[N];
      10  
      11  __attribute__ ((noinline)) int
      12  foo (void)
      13  {
      14    int i, res = 0;
      15  #pragma omp simd safelen(8)
      16    for (i = 0; i < N; i++)
      17    {
      18      int t = a[i];
      19      if (c[i] != 0)
      20        if (t != 100 & t > 5)
      21  	res += 1;
      22    }
      23    return res;
      24  }
      25  
      26  __attribute__ ((noinline)) int
      27  hundred (void)
      28  {
      29    return 100;
      30  }
      31  
      32  
      33  int main (void)
      34  {
      35    int i;
      36  
      37    check_vect ();
      38  
      39    for (i = 0; i < N; i++)
      40      {
      41        c[i] = i & 1;
      42        switch (i & 3)
      43  	{
      44  case 0:
      45  	  a[i] = hundred ();
      46  	  break;
      47  case 1:
      48  	  a[i] = 1;
      49  	  break;
      50  default:
      51  	  a[i] = i + 6;
      52  	  break;
      53  	}
      54      }
      55    if (foo () != 16)
      56      abort ();
      57    return 0;
      58  }
      59  
      60  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */