/* { dg-do run } */ /* { dg-additional-options "-O3" } */ /* { dg-additional-options "-mtune=intel" { target x86_64-*-* i?86-*-* } } */ /* { dg-additional-options "-mtune=thunderx" { target aarch64*-*-* } } */ #include "tree-vect.h" int data[128]; void __attribute((noipa)) foo (int *data, int n) { for (int i = 0; i < n; ++i) data[i] = i; } int main() { check_vect (); for (int start = 0; start < 16; ++start) for (int n = 1; n < 3*16; ++n) { __builtin_memset (data, 0, sizeof (data)); foo (&data[start], n); for (int j = 0; j < n; ++j) if (data[start + j] != j) __builtin_abort (); } return 0; }