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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
So what is missing is for us to see that for the following __first_21 is
__first_20 + 8B and so we can replace either with the other.  IVOPTs figures
this out but nothing before.

<bb 4>
# __first_20 = PHI <&testArray._M_elems(2), __first_21(7)>
# __first_21 = PHI <&MEM[(void *)&testArray + 8B](2), __first_7(7)>
...
_8 = MEM[(const double *)__first_20 + 8B];

<bb 3> [local count: 955630224]:
# __result_15 = PHI <__first_21(5), __result_22(8)>
__first_7 = __first_21 + 8;
if (__first_7 != &MEM[(void *)&testArray + 8000B])
  goto <bb 7>; [89.00%]
else
  goto <bb 6>; [11.00%]

<bb 7> [local count: 850510900]:

Reply via email to