https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99971
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (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).