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

--- Comment #5 from vries at gcc dot gnu.org ---
We have reduction stmt _6 with loop phi prephitmp_11:
...
fn1 (unsigned int d)
{
  _Bool b_lsm.5;
  unsigned int b_lsm.4;
  int i;
  unsigned int pretmp_1;
  unsigned int ivtmp_4;
  unsigned int _6;
  unsigned int _9;
  unsigned int prephitmp_11;
  unsigned int ivtmp_12;

  <bb 2>:
  pretmp_1 = b;

  <bb 3>:
  # i_13 = PHI <i_8(4), 0(2)>
  # prephitmp_11 = PHI <_6(4), pretmp_1(2)>
  # ivtmp_4 = PHI <ivtmp_12(4), 1000(2)>
  _6 = d_5(D) | prephitmp_11;
  i_8 = i_13 + 1;
  ivtmp_12 = ivtmp_4 - 1;
  if (ivtmp_12 != 0)
    goto <bb 4>;
  else
    goto <bb 5>;

  <bb 4>:
  goto <bb 3>;

  <bb 5>:
  # _9 = PHI <_6(3)>
  # b_lsm.4_17 = PHI <_6(3)>
  b = b_lsm.4_17;
  return _9;
}
...

There are however two corresponding loop exit phis: _9 and b_lsm.4_17.

We only track one in the keep_res field of struct reduction_info.

Reply via email to