http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48549
Steven Bosscher <steven at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |steven at gcc dot gnu.org --- Comment #7 from Steven Bosscher <steven at gcc dot gnu.org> 2012-11-30 13:54:10 UTC --- A patch to get rid of BARRIERs runs into this one. Here's an alternative fix: Index: combine.c =================================================================== --- combine.c (revision 193989) +++ combine.c (working copy) @@ -1223,11 +1223,10 @@ combine_instructions (rtx f, unsigned int nregs) if (NONDEBUG_INSN_P (insn)) { while (last_combined_insn - && INSN_DELETED_P (last_combined_insn)) + && INSN_DELETED_P (last_combined_insn) + && last_combined_insn != BB_HEAD (this_basic_block)) last_combined_insn = PREV_INSN (last_combined_insn); if (last_combined_insn == NULL_RTX - || BARRIER_P (last_combined_insn) - || BLOCK_FOR_INSN (last_combined_insn) != this_basic_block || DF_INSN_LUID (last_combined_insn) <= DF_INSN_LUID (insn)) last_combined_insn = insn;