On Fri, Apr 05, 2013 at 10:54:48AM +0400, Andrey Belevantsev wrote: > I am testing the revert of this backport for 4.6 and will commit it > in about an hour or so. However, I am surprised we don't hit this
Ok, thanks. > either on 4.7, 4.8 or trunk. Some flush_pending_lists calls are > protected from debug insns as they check CALL_P or JUMP_P, but not > all of them. It looks like flush_pending_lists should not be called > on debug insns at all. And indeed, the attached patch fixes > Leonid's test case. > > Jakub, you don't happen to remember any changes in this area that > could hide the problem for 4.7 and later? No, but Alex or Vlad could know better. In any case, perhaps it could be bisected (I only have x86_64 compilers around for bisecting seed though, I'm afraid the testcase is mips only and hasn't been even posted). > *** gcc/sched-deps.c (revision 197492) > --- gcc/sched-deps.c (working copy) > *************** sched_analyze_insn (struct deps_desc *de > *** 3044,3050 **** > > /* Don't flush pending lists on speculative checks for > selective scheduling. */ > ! if (!sel_sched_p () || !sel_insn_is_speculation_check (insn)) > flush_pending_lists (deps, insn, true, true); > > if (!deps->readonly) > --- 3044,3050 ---- > > /* Don't flush pending lists on speculative checks for > selective scheduling. */ > ! if (NONDEBUG_INSN_P (insn) && (!sel_sched_p () || > !sel_insn_is_speculation_check (insn))) Too long line. Start && below NONDEBUG. > flush_pending_lists (deps, insn, true, true); > > if (!deps->readonly) Jakub