https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84058
--- Comment #7 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Created attachment 43876 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43876&action=edit Patch I am testing Turns out that those are mostly artifacts of the fact that basically all of cfg-cleanup has been hacked to do nothing on crossing jumps. The first example I gave is missing jump forwarding, second is crossjumping. There seems to be no inherent reason why one would reject such transforms. I think all we need to do treat crossing jumps as "far" and never turn near jumps to far ones. We could however turn far ones to near or redirect far from one far BB to another. The patch enables jump forwarding. It passes lto profiledbootstrap and profiledbootstrap. I am going to test firefox and ARM machine. Honza