[patch][Ping #3] PR80929: Realistic PARALLEL cost in seq_cost.

Georg-Johann Lay avr@gjlay.de
Wed Jun 28 14:04:00 GMT 2017


Ping #3


https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00096.html

On 02.06.2017 09:53, Georg-Johann Lay wrote:
 > Hi,
 >
 > this small addition improves costs of PARALLELs in
 > rtlanal.c:seq_cost().  Up to now, these costs are
 > assumed to be 1 which gives gross inexact costs for,
 > e.g. divmod which is represented as PARALLEL.
 >
 > The patch just forwards cost computation to insn_rtx_cost
 > which uses the cost of the 1st SET (if any) and otherwise
 > assign costs of 1 insn.
 >
 > Bootstrapped & regtested on x86_64.
 >
 > Moreover, it fixed the division by constant on avr where
 > the problem popped up since PR79665.
 >
 > Ok to install?
 >
 > Johann
 >
 > gcc/
 >     PR middle-end/80929
 >     * rtlanal.c (seq_cost) [PARALLEL]: Get cost from insn_rtx_cost
 >     instead of assuming cost of 1.

Index: rtlanal.c
===================================================================
--- rtlanal.c	(revision 248745)
+++ rtlanal.c	(working copy)
@@ -5300,6 +5300,9 @@ seq_cost (const rtx_insn *seq, bool spee
        set = single_set (seq);
        if (set)
          cost += set_rtx_cost (set, speed);
+      else if (INSN_P (seq)
+	       && PARALLEL == GET_CODE (PATTERN (seq)))
+	cost += insn_rtx_cost (PATTERN (seq), speed);
        else
          cost++;
      }



More information about the Gcc-patches mailing list