http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51471
--- Comment #13 from vries at gcc dot gnu.org 2011-12-19 13:23:41 UTC --- (In reply to comment #11) > This is the patch which I am testing: > Index: genattrtab.c > =================================================================== > --- genattrtab.c (revision 182342) > +++ genattrtab.c (working copy) > @@ -4280,6 +4280,11 @@ write_eligible_delay (const char *kind) > printf (" if (!INSN_P (candidate_insn))\n"); > printf (" return 0;\n"); > printf ("\n"); > + /* Frame related instructions are hard to put in the delay slot for > + debugging info reasons. */ > + printf (" if (RTX_FRAME_RELATED_P (candidate_insn))\n"); > + printf (" return 0;\n"); > + printf ("\n"); > > /* If more than one delay type, find out which type the delay insn is. */ What is the exact reason we're completely avoiding scheduling frame-related insns in delay slots? Why don't we try to fix it like this?: ... Index: src/gcc-mainline/gcc/reorg.c =================================================================== --- src/gcc-mainline/gcc/reorg.c (revision 182341) +++ src/gcc-mainline/gcc/reorg.c (working copy) @@ -2716,7 +2716,7 @@ fill_slots_from_thread (rtx insn, rtx co if (!must_annul && (condition == const_true_rtx || (! insn_sets_resource_p (trial, &opposite_needed, true) - && ! may_trap_or_fault_p (pat)))) + && ! may_trap_or_fault_p (pat) && !RTX_FRAME_RELATED_P (trial)))) { old_trial = trial; trial = try_split (pat, trial, 0); ... AFAIU, the only thing causing problems is frame-related insns being speculated.