http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48156
--- Comment #1 from Steven Bosscher <steven at gcc dot gnu.org> 2011-03-17 00:24:52 UTC --- Cross-jumping changes this: 24 NOTE_INSN_BASIC_BLOCK 25 si:SI=bx:SI REG_DEAD: bx:SI 26 di:SI=0x8 27 call <...> REG_DEAD: di:SI REG_DEAD: si:SI REG_EH_REGION: 0 48 pc=L37 i 49: barrier L30: 31 NOTE_INSN_BASIC_BLOCK 32 si:SI=bx:SI REG_DEAD: bx:SI 33 di:SI=0x4 34 call <...> REG_DEAD: di:SI REG_DEAD: si:SI REG_EH_REGION: 0 L37: 38 NOTE_INSN_BASIC_BLOCK 55 NOTE_INSN_EPILOGUE_BEG to this: 24 NOTE_INSN_BASIC_BLOCK 26 di:SI=0x8 62 pc=L61 i 63: barrier L30: 31 NOTE_INSN_BASIC_BLOCK 33 di:SI=0x4 L61: 59 NOTE_INSN_BASIC_BLOCK 34 call <...> REG_DEAD: di:SI REG_DEAD: si:SI REG_EH_REGION: 0 55 NOTE_INSN_EPILOGUE_BEG So the call is unified, and that looks OK to me. Investigating...