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.