1  /* PR tree-optimization/59591 */
       2  /* { dg-additional-options "-fopenmp-simd" } */
       3  
       4  #ifndef CHECK_H
       5  #include "tree-vect.h"
       6  #endif
       7  
       8  extern void abort (void);
       9  
      10  int p[256], q[256], r[256], t[256];
      11  
      12  __attribute__((noinline, noclone)) void
      13  foo (void)
      14  {
      15    int i;
      16    #pragma omp simd safelen(64)
      17    for (i = 0; i < 256; i++)
      18      if (r[i] > 32)
      19        t[i] = p[q[i] * 3L + 2L];
      20  }
      21  
      22  __attribute__((noinline, noclone)) void
      23  bar (void)
      24  {
      25    int i;
      26    for (i = 0; i < 256; i++)
      27      {
      28        r[i] = ((i >> 2) & (1 << (i & 3))) ? 32 + i : 32 - i;
      29        q[i] = r[i] > 32 ? ((i * 7) % 84) : 99 + i;
      30        p[i] = i * 11;
      31        t[i] = i * 13;
      32      }
      33    foo ();
      34    for (i = 0; i < 256; i++)
      35      if ((i >> 2) & (1 << (i & 3)))
      36        {
      37  	if (t[i] != (((i * 7) % 84) * 3 + 2) * 11)
      38  	  abort ();
      39        }
      40      else if (t[i] != i * 13)
      41        abort ();
      42  }
      43  
      44  #ifndef CHECK_H
      45  int
      46  main ()
      47  {
      48    check_vect ();
      49    bar ();
      50    return 0;
      51  }
      52  #endif
      53