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.

Reply via email to