On Wed, Apr 20, 2016 at 02:22:14AM -0400, tbsaunde+...@tbsaunde.org wrote:
>       * config/microblaze/microblaze.c (microblaze_adjust_cost):
>       * Likewise.

Stray * (here and elsewhere).

> --- a/gcc/config/alpha/alpha.c
> +++ b/gcc/config/alpha/alpha.c
> @@ -4758,14 +4758,15 @@ alpha_split_atomic_exchange_12 (rtx operands[])
>     a dependency LINK or INSN on DEP_INSN.  COST is the current cost.  */
>  
>  static int
> -alpha_adjust_cost (rtx_insn *insn, rtx link, rtx_insn *dep_insn, int cost)
> +alpha_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep_insn, int 
> cost,

Why an int and not enum reg_note?

> +                unsigned int)
>  {
>    enum attr_type dep_insn_type;
>  
>    /* If the dependence is an anti-dependence, there is no cost.  For an
>       output dependence, there is sometimes a cost, but it doesn't seem
>       worth handling those few cases.  */
> -  if (REG_NOTE_KIND (link) != 0)
> +  if (dep_type != 0)
>      return cost;

>From reg-notes.def:

/* REG_DEP_TRUE is used in scheduler dependencies lists to represent a
   read-after-write dependency (i.e. a true data dependency).  This is
   here, not grouped with REG_DEP_ANTI and REG_DEP_OUTPUT, because some
   passes use a literal 0 for it.  */
REG_NOTE (DEP_TRUE)

Get rid of the literal 0 while you're at it?  Some places already have
REG_DEP_TRUE.

> @@ -4486,7 +4487,7 @@ c6x_adjust_cost (rtx_insn *insn, rtx link, rtx_insn 
> *dep_insn, int cost)
>    if (insn_code_number >= 0)
>      insn_type = get_attr_type (insn);
>  
> -  kind = REG_NOTE_KIND (link);
> +  kind = (reg_note) dep_type;

Maybe it's just me, but it would look a lot less confusing with "enum".

>  static int
> -mips_adjust_cost (rtx_insn *insn ATTRIBUTE_UNUSED, rtx link,
> -               rtx_insn *dep ATTRIBUTE_UNUSED, int cost)
> +mips_adjust_cost (rtx_insn *, int dep_type, rtx_insn *, int cost, unsigned 
> int)
>  {
> -  if (REG_NOTE_KIND (link) == REG_DEP_OUTPUT
> -      && TUNE_20KC)
> -    return cost;
> -  if (REG_NOTE_KIND (link) != 0)
> +  if (dep_type != 0 && (dep_type != REG_DEP_OUTPUT || !TUNE_20KC))
>      return 0;
>    return cost;
>  }

The original logic was a lot more readable (test positives, not negatives).

> +as a data-dependence.  If the scheduler using the automaton based pipeline
>  description, the cost of anti-dependence is zero and the cost of
>  output-dependence is maximum of one and the difference of latency
>  times of the first and the second insns.  If these values are not

"is using" (pre-existing, but hey).


So I wonder how much is gained by adding an extra unused argument to so
many places.


Segher

Reply via email to