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;