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

--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So in uninit1 we have:
  if (_6691 != 0)
    goto <bb 287>; [5.50%]
  else
    goto <bb 87>; [94.50%]

  <bb 287> [local count: 17344687]:
  goto <bb 88>; [100.00%]

  <bb 87> [local count: 298013267]:

  <bb 88> [local count: 315357954]:
  # const_upper_3854 = PHI <_6687(87), 18446744073709551615(287)>
  # _870 = PHI <1(87), 0(287)>
(lots of stuff)
....
  if (_6691 != 0)
    goto <bb 101>; [5.50%]
  else
    goto <bb 293>; [94.50%]

  <bb 293> [local count: 298013268]:
  goto <bb 102>; [100.00%]

  <bb 101> [local count: 17344687]:

  <bb 102> [local count: 315357954]:
  # const_upper_3931 = PHI <const_upper_3934(D)(101), _6687(293)>
  if (_870 != 0)
    goto <bb 103>; [50.00%]
  else
    goto <bb 106>; [50.00%]

  <bb 103> [local count: 157678977]:
  if (const_upper_3931 > _6695)
    goto <bb 105>; [89.00%]
  else
    goto <bb 294>; [11.00%]

But _870 is _6691 == 0 but that relationship is totally missed and there is
full on jump threading miss in the above IR.

Reply via email to