This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] haifa-sched: fix autopref_rank_for_schedule qsort comparator


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.

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]