https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99767
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Yeah, I don't see a problem on the omp simd cloning side, one could write such code by hand too. The thing is the DCE disabling, ifcvt adds .COND_DIV on the to be vectorized loop copy only, but in the end the loop is vectorized but .COND_DIV is not because it is dead and the vectorizer supposedly only considers statements that are actually used. So, either the vectorizer should do something for the dead statements in the loop (whatever, including failing the vectorization, or vectorizing them too, ...), or ifcvt shouldn't add those for the dead statements, or we need to lower those ifns back into scalar statements at the end of vectorization, or be able to expand them even when scalar.