https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110060
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Hmm:
```
MEM[(struct _Vector_base *)&w]._M_impl.D.25239._M_start = _73;
_66 = _73 + 1;
MEM[(struct _Vector_base *)&w]._M_impl.D.25239._M_end_of_storage = _66;
MEM[(struct vector *)&w].D.25935._M_impl.D.25239._M_finish = _66;
_486 = _63 + 2;
v.D.25935._M_impl.D.25239._M_finish = _486;
_154 = _63 + 3;
v.D.25935._M_impl.D.25239._M_finish = _154;
_138 = MEM[(struct X * const &)&v];
_215 = v.D.25935._M_impl.D.25239._M_end_of_storage;
_216 = v.D.25935._M_impl.D.25239._M_finish;
if (_215 != _216)
```
There is huge missed optimizations here.
I noticed that the last fre is not iterative and we have the case where many of
the ifs are removed due to fre and forwprop at the end.