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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
I'll note it is loop distribution that leaves around the forwarder which
CFG cleanup is not able to remove (because it has a PHI, pass_merge_phi would).
We might want to enhance CFG cleanup to handle the case of a single incoming
edge to SRC and a DEST without PHIs (we can then simply move the PHIs without
any problem).

  <bb 8> [local count: 134202633]:
  # .MEM_13 = PHI <.MEM_52(20), .MEM_12(7)>
  # b_lsm.5_23 = PHI <b_lsm.5_24(20), _2(7)>
  # ivtmp_15 = PHI <9(20), ivtmp_30(7)>
  ivtmp_30 = ivtmp_15 - 1;
  if (ivtmp_30 != 0)
    goto <bb 4>; [88.89%]
  else
    goto <bb 9>; [11.11%]


  <bb 4> [local count: 1073741823]:
  # .MEM_12 = PHI <.MEM_13(8)>
  _2 = b_lsm.5_23 + -1;

  <bb 7> [local count: 119292720]:
  goto <bb 8>;

Reply via email to