> 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.  */
>> 

Reply via email to