> On Sep 22, 2017, at 4:18 AM, Alexander Monakov <amona...@ispras.ru> wrote: > > On Tue, 19 Sep 2017, Alexander Monakov wrote: >> * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns >> first, always call autopref_rank_data otherwise. > > May I apply this patch now to unblock qsort checking? Further changes or > adjustments can then go in independently at a later time.
Yes, feel free to commit one of your versions. -- Maxim Kuvyrkov www.linaro.org > Thanks. > Alexander > >> --- a/gcc/haifa-sched.c >> +++ b/gcc/haifa-sched.c >> @@ -5707,7 +5707,8 @@ autopref_rank_data (autopref_multipass_data_t data1, >> static int >> autopref_rank_for_schedule (const rtx_insn *insn1, const rtx_insn *insn2) >> { >> - for (int write = 0; write < 2; ++write) >> + int r = 0; >> + for (int write = 0; write < 2 && !r; ++write) >> { >> autopref_multipass_data_t data1 >> = &INSN_AUTOPREF_MULTIPASS_DATA (insn1)[write]; >> @@ -5716,21 +5717,20 @@ autopref_rank_for_schedule (const rtx_insn *insn1, >> const rtx_insn *insn2) >> >> if (data1->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED) >> autopref_multipass_init (insn1, write); >> - if (data1->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT) >> - continue; >> >> if (data2->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED) >> autopref_multipass_init (insn2, write); >> - if (data2->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT) >> - continue; >> >> - if (!rtx_equal_p (data1->base, data2->base)) >> - continue; >> + int irrel1 = data1->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT; >> + int irrel2 = data2->status == AUTOPREF_MULTIPASS_DATA_IRRELEVANT; >> >> - return autopref_rank_data (data1, data2); >> + if (!irrel1 && !irrel2) >> + r = autopref_rank_data (data1, data2); >> + else >> + r = irrel2 - irrel1; >> } >> >> - return 0; >> + return r; >> } >> >> /* True if header of debug dump was printed. */ >>