/* { dg-additional-options "-fopenmp-simd" } */ /* { dg-additional-options "-mavx" { target avx_runtime } } */ /* { dg-final { scan-tree-dump-times "vectorized \[1-3] loops" 3 "vect" { target i?86-*-* x86_64-*-* } } } */ #include "tree-vect.h" __attribute__((noipa)) int foo (int *a) { int i; #pragma omp simd lastprivate (i) for (i = 0; i < 64; i++) a[i] = i; return i; } __attribute__((noipa)) void bar (int *a) { int i; #pragma omp simd private (i) for (i = 0; i < 64; i++) a[i] = i + 1; } __attribute__((noipa)) int baz (int *a) { int i; #pragma omp simd linear (i) for (i = 0; i < 64; i++) a[i] = i + 2; return i; } int main () { int i; int a[64]; check_vect (); if (foo (a) != 64) abort (); for (i = 0; i < 64; ++i) if (a[i] != i) abort (); else a[i] = -8; bar (a); for (i = 0; i < 64; ++i) if (a[i] != i + 1) abort (); else a[i] = -8; if (baz (a) != 64) abort (); for (i = 0; i < 64; ++i) if (a[i] != i + 2) abort (); return 0; }