https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112402
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The orginal threads about patch splitting: https://gcc.gnu.org/legacy-ml/gcc/2015-03/msg00057.html https://gcc.gnu.org/pipermail/gcc/2015-May/217495.html > or axe path splitting or move it to RTL Jeff had a similar idea back in 2016 (I would assume while he was looking into PR 68541): https://gcc.gnu.org/pipermail/gcc-patches/2016-February/441651.html : ``` And if that's the case, then we may really be looking at something that belongs at the RTL level rather than at the tree/gimple level. Sadly, it's harder to do things like duplicate blocks at the RTL level. ``` and also mentioned in (which was the heustrics added to fix PR 68541): https://gcc.gnu.org/pipermail/gcc-patches/2016-February/441841.html Maybe this is something for GCC 15 ... to move to this to RTL right during the loop optimization phase after pass_rtl_doloop. There is still a CSE and DSE/DCE passes afterwards too.