1// { dg-do run }
2// { dg-options "-O2" }
3// { dg-additional-options "-msse2" { target sse2_runtime } }
4// { dg-additional-options "-mavx" { target avx_runtime } }
5
6extern "C" void abort ();
7__UINTPTR_TYPE__ arr[1027];
8
9__attribute__((noinline, noclone)) void
10foo ()
11{
12  int i, v;
13  #pragma omp simd private (v) safelen(16)
14  for (i = 0; i < 1027; i++)
15    arr[i] = (__UINTPTR_TYPE__) &v;
16}
17
18int
19main ()
20{
21  int i, j, cnt = 0;
22  __UINTPTR_TYPE__ arr2[16];
23  foo ();
24  for (i = 0; i < 1027; i++)
25    {
26      for (j = 0; j < cnt; j++)
27	if (arr[i] == arr2[j])
28	  break;
29      if (j != cnt)
30	continue;
31      if (cnt == 16)
32	abort ();
33      arr2[cnt++] = arr[i];
34    }
35  return 0;
36}
37