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.

Reply via email to