https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118852
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- A testcase would be the following - we don't perform loop-header copying for an isolated testcase, thus manually here. void * foo (void **p, void **limit) { if (++p < limit) do { void *x = *p; if (x != (void *)0 && x != (void *)1) return x; } while (++p < limit); return (void *)0; } I can't spot what is wrong here with the vectorization off-head.