[Bug middle-end/88490] Missed autovectorization when indices are different

2018-12-17 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 --- Comment #6 from rguenther at suse dot de --- On Fri, 14 Dec 2018, joseph at codesourcery dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 > > --- Comment #5 from joseph at codesourcery dot com dot com> --- > On Fri, 14 D

[Bug middle-end/88490] Missed autovectorization when indices are different

2018-12-14 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 --- Comment #5 from joseph at codesourcery dot com --- On Fri, 14 Dec 2018, rguenther at suse dot de wrote: > Note I do not think the C standard is sufficiently clear with regarding > to restrict qualified pointers loaded from memory. I think

[Bug middle-end/88490] Missed autovectorization when indices are different

2018-12-14 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 --- Comment #4 from rguenther at suse dot de --- On Fri, 14 Dec 2018, bugzi...@poradnik-webmastera.com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 > > --- Comment #3 from Daniel Fruzynski --- > In this case s->d is pointer to p

[Bug middle-end/88490] Missed autovectorization when indices are different

2018-12-14 Thread bugzi...@poradnik-webmastera.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 --- Comment #3 from Daniel Fruzynski --- In this case s->d is pointer to pointer to double, and both pointer levels have restrict qualifier. I wonder if you could add some tag that s->d[n] and s->d[k] points to separate memory areas. This tag cou

[Bug middle-end/88490] Missed autovectorization when indices are different

2018-12-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|

[Bug middle-end/88490] Missed autovectorization when indices are different

2018-12-13 Thread bugzi...@poradnik-webmastera.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490 --- Comment #1 from Daniel Fruzynski --- Ehh, small typo. This is correct version, also not vectorized: [code] struct S { double* __restrict__ * __restrict__ d; }; void test(S* __restrict__ s, int n, int k) { if (n > k) { fo