http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54546
--- Comment #1 from chrbr at gcc dot gnu.org 2012-09-13 06:40:54 UTC --- shrink-wrapping exposes a few problems related to partitioning. 1) Tries to duplicate a Basic block that has only one predecessor coming from a different partition. Since the edge is not marking with with EDGE_CROSSING missing across section boundary. Note that even with EDGE_CROSSING information, the generated code would be quite bad, with extra jumps coming from the critical path. The problem is explained with the start of a resolution here http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00794.html 2) Seem to miss redirecting CROSS_JUMPING jumps. When we have jump_insn 205 204 179 4 (set (pc) (reg:SI 1 r1 [237])) 316 {indirect_jump_compact} (expr_list:REG_CROSSING_JUMP (nil) (nil)) we have a JUMP_LABEL (insn) containing the setting or r1 with the label_rtx, but 'patch_jump_insn' fails to see it, although it looks like the branch could be redirected.