https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89594
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Mine. The CFG cleanup causes the .LOOP_VECTORIZED_CALL to vanish as well because if-conversion made us discover the dominating loops exit is never taken... Before if-conversion we have # _8 = PHI <zr_26(3), 0(14)> zr_15 = 0; if (zr_15 <= 0) goto <bb 13>; [87.64%] else goto <bb 15>; [12.36%] the preceeding copyprop figures that out. Before copyprop: <bb 5> [local count: 118111601]: # _8 = PHI <zr_26(4), 0(14)> h3_lsm.11_4 = 0; h3.2_19 = h3_lsm.11_4; zr_15 = (long int) h3.2_19; if (zr_15 <= 0) goto <bb 13>; [87.64%] else goto <bb 15>; [12.36%] and copyprop doesn't propagate through conversions but substitute-and-fold will elide that. And if-conversion then performs value-numbering on the if-converted loop.