https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106677
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think the biggest issue is at forwprop3 we have:
```
<bb 2> [local count: 96636761]:
_19 = &foo_6(D)->m_array;
__for_begin ={v} {CLOBBER(bob)};
_43 = foo_6(D) + 24;
...
<bb 3> [local count: 853673667]:
# _51 = PHI <_17(4), _19(2)>
# SR.81_45 = PHI <_17(4), _19(2)>
_15 = MEM[(int * const * const &)_51];
_16 = MEM[(int * const * const &)_51 + 8];
if (_15 != _16)
goto <bb 5>; [5.50%]
else
goto <bb 4>; [94.50%]
<bb 4> [local count: 806721616]:
_17 = _51 + 24;
if (_17 != _43)
goto <bb 3>; [94.50%]
else
goto <bb 5>; [5.50%]
```
But this is a loop that iterators just once. But we don't remove this "loop"
until late.