I see an assemble failure for gcc.dg/tree-prof/bb-reorg.c; compare-and-branch instructions are modified to jump to another section.
Some jumps simply can't be made cross-section; one for the ones that can, it is essential that the REG_CROSSING_JUMP note is added. I have this patch: * hooks.c (hook_bool_const_rtx_const_rtx_true): New function. * hooks.h (hook_bool_const_rtx_const_rtx_true): Declare. * target.h (can_follow_jump): New hook. * target-def.h (TARGET_CAN_FOLLOW_JUMP): Define. (TARGET_INITIALIZER): Include it. * reorg.c (follow_jumps): New parameters jump and cp. Changed all callers. * config/arc/arc.c (arc_can_follow_jump): New function. (TARGET_CAN_FOLLOW_JUMP): Override. * config/arc/arc.md (jump_i): If a REG_CROSSING_JUMP is present, length is 4. Which I can post with a tm.texi patch once our Copyright assignment has been acknowledged. -- Summary: delay branch scheduling follows REG_CROSSING_JUMP jumps indiscriminately Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: assemble-failure Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38449