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

Reply via email to