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

--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Looks like any other slight changes causes some optimizations to happen earlier
which allows things like:

  _26 = BS_ARG_3_12(D) != 0;
  iftmp.3_5 = _26 ? iftmp.3_19 : -23;
to be out of the loop and does not expose the issue.


The only different between 15 and 16 is:
  <bb 8> [local count: 674543195]:
  # ivtmp.11_34 = PHI <ivtmp.11_45(7), 1(4)>
  # ivtmp.17_85 = PHI <ivtmp.17_84(7), ivtmp.17_63(4)>
  # ivtmp.18_88 = PHI <ivtmp.18_87(7), ivtmp.18_64(4)>
  goto <bb 10>; [100.00%]

bb is merged into:

  <bb 9> [local count: 913155473]:
  # iftmp.3_10 = PHI <-23(7), iftmp.3_33(8), -23(4)>
  # ivtmp.17_64 = PHI <ivtmp.17_79(7), ivtmp.17_63(8), ivtmp.17_58(4)>
  # ivtmp.11_70 = PHI <ivtmp.11_41(7), ivtmp.11_69(8), 1(4)>
  # ivtmp.18_74 = PHI <ivtmp.18_76(7), ivtmp.18_73(8), ivtmp.18_59(4)>

I have not looked further to see if there it happens that ifcvt happens on the
rtl level for 15 and not 16 for this one either. It could.

Reply via email to