[PATCH 1/5] combine: more verbose costs output

Richard Biener richard.guenther@gmail.com
Mon Nov 17 09:56:00 GMT 2014


On Fri, Nov 14, 2014 at 8:19 PM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> Output the cost calculation always, not only when the costs disallow
> a combination.  Checking if your port has sane costs is much easier
> this way.
>
> Also there is no point in printing full lines at once; debug dumps
> are never translated, so we can print piece by piece.

Ok.

Thanks,
Richard.

>
> 2014-11-14  Segher Boessenkool  <segher@kernel.crashing.org>
>
> gcc/
>         * combine.c (combine_validate_cost): Always print the insn costs
>         to the dump file.
>
> ---
>  gcc/combine.c | 63 ++++++++++++++++++++++++-----------------------------------
>  1 file changed, 25 insertions(+), 38 deletions(-)
>
> diff --git a/gcc/combine.c b/gcc/combine.c
> index e240cfb..f7797e7 100644
> --- a/gcc/combine.c
> +++ b/gcc/combine.c
> @@ -914,48 +914,35 @@ combine_validate_cost (rtx_insn *i0, rtx_insn *i1, rtx_insn *i2, rtx_insn *i3,
>
>    /* Disallow this combination if both new_cost and old_cost are greater than
>       zero, and new_cost is greater than old cost.  */
> -  if (old_cost > 0 && new_cost > old_cost)
> -    {
> -      if (dump_file)
> -       {
> -         if (i0)
> -           {
> -             fprintf (dump_file,
> -                      "rejecting combination of insns %d, %d, %d and %d\n",
> -                      INSN_UID (i0), INSN_UID (i1), INSN_UID (i2),
> -                      INSN_UID (i3));
> -             fprintf (dump_file, "original costs %d + %d + %d + %d = %d\n",
> -                      i0_cost, i1_cost, i2_cost, i3_cost, old_cost);
> -           }
> -         else if (i1)
> -           {
> -             fprintf (dump_file,
> -                      "rejecting combination of insns %d, %d and %d\n",
> -                      INSN_UID (i1), INSN_UID (i2), INSN_UID (i3));
> -             fprintf (dump_file, "original costs %d + %d + %d = %d\n",
> -                      i1_cost, i2_cost, i3_cost, old_cost);
> -           }
> -         else
> -           {
> -             fprintf (dump_file,
> -                      "rejecting combination of insns %d and %d\n",
> -                      INSN_UID (i2), INSN_UID (i3));
> -             fprintf (dump_file, "original costs %d + %d = %d\n",
> -                      i2_cost, i3_cost, old_cost);
> -           }
> +  int reject = old_cost > 0 && new_cost > old_cost;
>
> -         if (newi2pat)
> -           {
> -             fprintf (dump_file, "replacement costs %d + %d = %d\n",
> -                      new_i2_cost, new_i3_cost, new_cost);
> -           }
> -         else
> -           fprintf (dump_file, "replacement cost %d\n", new_cost);
> -       }
> +  if (dump_file)
> +    {
> +      fprintf (dump_file, "%s combination of insns ",
> +              reject ? "rejecting" : "allowing");
> +      if (i0)
> +       fprintf (dump_file, "%d, ", INSN_UID (i0));
> +      if (i1)
> +       fprintf (dump_file, "%d, ", INSN_UID (i1));
> +      fprintf (dump_file, "%d and %d\n", INSN_UID (i2), INSN_UID (i3));
>
> -      return false;
> +      fprintf (dump_file, "original costs ");
> +      if (i0)
> +       fprintf (dump_file, "%d + ", i0_cost);
> +      if (i1)
> +       fprintf (dump_file, "%d + ", i1_cost);
> +      fprintf (dump_file, "%d + %d = %d\n", i2_cost, i3_cost, old_cost);
> +
> +      if (newi2pat)
> +       fprintf (dump_file, "replacement costs %d + %d = %d\n",
> +                new_i2_cost, new_i3_cost, new_cost);
> +      else
> +       fprintf (dump_file, "replacement cost %d\n", new_cost);
>      }
>
> +  if (reject)
> +    return false;
> +
>    /* Update the uid_insn_cost array with the replacement costs.  */
>    INSN_COST (i2) = new_i2_cost;
>    INSN_COST (i3) = new_i3_cost;
> --
> 1.8.1.4
>



More information about the Gcc-patches mailing list