[Bug middle-end/88490] Missed autovectorization when indices are different
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Dec 14 10:46:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88490
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-12-14
CC| |rguenth at gcc dot gnu.org
Blocks| |49774
Ever confirmed|0 |1
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.
_33 = MEM[(double *)_28 clique 1 base 2];
MEM[(double *)_32 clique 1 base 2] = _33;
_35 = MEM[(double *)_28 + 8B clique 1 base 2];
MEM[(double *)_32 + 8B clique 1 base 2] = _35;
_49 = MEM[(double *)_28 clique 1 base 2];
MEM[(double *)_32 clique 1 base 2] = _49;
_51 = MEM[(double *)_28 + 8B clique 1 base 2];
MEM[(double *)_32 + 8B clique 1 base 2] = _51;
t.c:13:24: note: can't determine dependence between MEM[(double *)_32 clique 1
base 2] and MEM[(double *)_28 + 8B clique 1 base 2]
As you can see we do not exploit that n != k when assigning restrict tags
to the indirect loaded pointers. Nor would we do that when you load
those in an unrolled loop. Our restrict machinery is simply not set up
for this.
I don't see how a compiler could reliably and reasonably implement this.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49774
[Bug 49774] [meta-bug] restrict qualification aliasing issues
More information about the Gcc-bugs
mailing list