https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79028

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-01-09
                 CC|                            |rguenth at gcc dot gnu.org
          Component|c                           |tree-optimization
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  This is folding via match-and-simplify

  ticks_16 = _4 / 1000;
  instance_14(D)->dio_next_delay = ticks_16;
  _5 = ticks_16 / 2;
  _6 = ticks_16 / 2;

to

  ticks_16 = _4 / 1000;
  instance_14(D)->dio_next_delay = ticks_16;
  _5 = _4 / 2000;
  _6 = _4 / 2000;

which would be ok if ticks_16 would become dead but it isn't.

forwprop misses global liveness analysis to do a better than nothing cost model
so it blindly assumes there'll be followup optimization opportunities.

It's hard to fix cases like this without pessimizing other cases (without
actually implementing such global cost modeling).

Reply via email to