https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118755
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So going back to the question of why late combine fails here. We have: ``` (set x0 (eq ...) (set pc (if_then_else (eq x0 (const_int 0)) label pc) (set (mem) x0) ... (set x0 (mem)) label: x0 = phi<x0, x0> (use x0) ``` But late combine requires to prop across the phi (though in this case there is nothing to prop too). ``` (gdb) p debug(use->phi ()) phi node r0:a9 (x0:DI) in ebb4 at point 30 inputs: bb3: set r0:i50 (x0:DI) bb2: set r0:i13 (x0:SI) used by insn i26 in bb4 [ebb4] at point 34 live out from bb4 [ebb4] at point 36 used by phi node r0:a12 (x0:DI) in ebb1 at point 38 ``` And late_combine requires you to prop it into all uses rather than some of the uses. So going back to fwprop.