/* PR tree-optimization/87320 */ /* { dg-do run } */ /* { dg-require-effective-target alloca } */ /* { dg-options "-O3" } */ /* { dg-additional-options "-mavx" { target avx_runtime } } */ static void __attribute__ ((noinline)) transpose_vector (unsigned long n) { unsigned long data[2 * n]; for (unsigned long i = 0; i < 2 * n; i++) data[i] = 4 * i + 2; unsigned long transposed[n]; for (unsigned long i = 0; i < n; i++) transposed[i] = data[2 * i]; for (unsigned long i = 0; i < n; i++) if (transposed[i] != 8 * i + 2) __builtin_abort (); } int main () { transpose_vector (4); transpose_vector (120); return 0; }