This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[ping #4][patch] Fix PR80929: Realistic PARALLEL cost in seq_cost.
- From: Georg-Johann Lay <avr at gjlay dot de>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 11 Jul 2017 10:47:27 +0200
- Subject: [ping #4][patch] Fix PR80929: Realistic PARALLEL cost in seq_cost.
- Authentication-results: sourceware.org; auth=none
Ping #4
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 += 1 + insn_rtx_cost (PATTERN (seq), speed);
else
cost++;
}