[Bug tree-optimization/94401] [10 Regression] pr92420.c fails on aarch64 since r10-7415
linkw at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 31 05:44:56 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94401
Kewen Lin <linkw at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |segher at gcc dot gnu.org,
| |wschmidt at gcc dot gnu.org
Status|NEW |ASSIGNED
--- Comment #4 from Kewen Lin <linkw at gcc dot gnu.org> ---
My commit extends the current scalar epilogue peeling for gaps
elimination, it makes the case can make use of int for the construction. But it
reveals the existing handlings misses to handle VMAT_CONTIGUOUS_REVERSE case,
currently it assumes overrun happens on high address end, it's true for almost
all cases, but this case is on the low address end. So if we have to load the
high part and put it in the latter part of constructed vector for
VMAT_CONTIGUOUS_REVERSE.
The IR before/after the commit looks
good:
vect__9.16_80 = MEM <vector(2) int> [(int *)vectp_y.14_78];
vect__9.17_81 = VEC_PERM_EXPR <vect__9.16_80, vect__9.16_80, { 1, 0 }>;
vect__9.18_82 = VEC_PERM_EXPR <vect__9.17_81, vect__9.17_81, { 0, 0 }>;
bad:
_30 = MEM[(int *)vectp_y.12_34];
_20 = {_30, 0};
vect__9.14_19 = VIEW_CONVERT_EXPR<vector(2) int>(_20);
vect__9.15_61 = VEC_PERM_EXPR <vect__9.14_19, vect__9.14_19, { 1, 0 }>;
vect__9.16_54 = VEC_PERM_EXPR <vect__9.15_61, vect__9.15_61, { 0, 0 }>;
More information about the Gcc-bugs
mailing list