https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98289
--- Comment #7 from Jorn Wolfgang Rennecke <amylaar at gcc dot gnu.org> --- Created attachment 58719 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58719&action=edit patch to fix internal compiler errors in shrink-wrap.cc on EDGE_CROSSING edges I'm currently using this patch. The only issue that remains for gcc.dg/torture/pr98289.c is that before prologue/epilogue threading, there are four separate crossing jumps to labels at the same location as lab. Without shrink wrapping, this gets cleaned up by try_forward_edges (called from try_optimize_cfg, called from cleanup_cfg, called from pass_jump2::execute) . With shrink wrapping, the clean up doesn't happen or has no effect, so the clutter of all these crossing jumps in the non-cold partition defeat the purpose of the hot-cold partitioning.