/* { dg-lto-do link } */ /* { dg-require-effective-target vect_simd_clones } */ /* { dg-require-effective-target avx2 } */ /* { dg-lto-options { { -fopenmp-simd -O3 -ffast-math -mavx2 -flto -flto-partition=max } } } */ #define SIZE 4096 float x[SIZE]; #pragma omp declare simd float __attribute__ ((noinline)) my_mul (float x, float y) { return x * y; } __attribute__ ((noinline)) int foo () { int i = 0; #pragma omp simd safelen (16) for (i = 0; i < SIZE; i++) x[i] = my_mul ((float)i, 9932.3323); return (int)x[0]; } int main () { int i = 0; for (i = 0; i < SIZE; i++) x[i] = my_mul ((float) i, 9932.3323); foo (); return (int)x[0]; }