https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99971
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #4) > (In reply to andysem from comment #3) > > I tried adding __restrict__ to the equivalents of x, y1 and y2 in the > > original larger code base and it didn't help. The compiler (gcc 10.2) would > > still generate the same half-vectorized code. > > Hmm, that's odd. I suppose the equivalent of test() was inlined in the > larger code base? > > I'd be interested in preprocessed source of a translation unit that exhibits > this issue (and a pointer to the point in the source that is relevant). > > Note for GCC 12 I have a patch to improve things w/o requiring the use > of __restrict (and I'm curious on whether that helps for the larger code > base). https://gcc.gnu.org/pipermail/gcc-patches/2021-April/567805.html is the patch which applies to current master.