https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105219

--- Comment #13 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #11)
> int data[128];
> 
> void __attribute((noipa))
> foo (int *data, int n)
> {
>   for (int i = 0; i < n; ++i)
>     data[i] = i;
> }
> 
> int main()
> {
>   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;
> }
> 
> for example aborts with -O3 -mtune=intel -fno-vect-cost-model on x86_64,
> the cost model disabling is necessary to have the epilogue vectorized.
> Without a cost model we peel for the maximum number of aligned refs
> but still use the target cost to decide whether peeling is worth at all.

This one started with r12-1181-g7ed1cd9665d8ca0f.

Reply via email to