https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106995
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization CC| |rguenth at gcc dot gnu.org --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- The issue is that during if-conversion VN we figure the loop exit is unreachable and thus elide the loop but not the if (.LOOP_VECTORIZED) call ... Region does not contain all edges into the entry block, skipping its PHIs. Processing block 0: BB8 Cannot trust state of predecessor edge 16 -> 8, marking executable Value numbering stmt = _9 = (long unsigned int) iftmp.0_11; Setting value number of _9 to _9 (changed) Making available beyond BB8 _9 for value _9 Value numbering stmt = _6 = a.1_8 <= 1; Setting value number of _6 to _6 (changed) Making available beyond BB8 _6 for value _6 Value numbering stmt = iftmp.0_12 = _6 ? iftmp.0_11 : 0; Setting value number of iftmp.0_12 to iftmp.0_12 (changed) Making available beyond BB8 iftmp.0_12 for value iftmp.0_12 Value numbering stmt = prephitmp_10 = _6 ? _9 : 0; Setting value number of prephitmp_10 to prephitmp_10 (changed) Making available beyond BB8 prephitmp_10 for value prephitmp_10 Value numbering stmt = if (prephitmp_10 != 11) marking destination block 16 reachable probably a latent issue for a while.