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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Specifically the IL is the following, rewriting the IL in terms of a single
IV bound by _14 would be the goal.  If not unified niter analysis would
need to special-case &-combining based on the comparison kind, for EQ/NE
we can only handle equal niter results or one where we can build up an
assumption that all of them are equal.

  _14 = n_9(D) * 8;
...
  _15 = op1_3(D) + _14;
  _16 = op2_5(D) + _14;
  _17 = result_7(D) + _14;
...

  <bb 7> [local count: 19347237796]:
  # __first$c_37 = PHI <_28(9), result_7(D)(15)>
  # __first$a_12 = PHI <_25(9), op1_3(D)(15)>
  # __first$b_13 = PHI <_27(9), op2_5(D)(15)>
  _29 = MEM[(const long unsigned int &)__first$a_12];
  _30 = MEM[(const long unsigned int &)__first$b_13];
  sum_19 = _29 + _30;
  iftmp.4_21 = sum_19 - modulus_31(D);
  _32 = sum_19 >= modulus_31(D);
  iftmp.4_22 = _32 ? iftmp.4_21 : sum_19;
  MEM[(long unsigned int &)__first$c_37] = iftmp.4_22;
  _25 = __first$a_12 + 8;
  _27 = __first$b_13 + 8;
  _28 = __first$c_37 + 8;
  _43 = _16 == _27;
  _42 = _15 == _25;
  _11 = _42 & _43;
  _2 = _17 == _28;
  _4 = _2 & _11;
  if (_4 != 0)
    goto <bb 8>; [2.70%]
  else
    goto <bb 9>; [97.30%]

  <bb 9> [local count: 18824862470]:
  goto <bb 7>; [100.00%]

  <bb 8> [local count: 1073741824]:
  return;

Reply via email to