aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-11-29 11:31:36 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-11-29 11:31:36 +0100
commitcedd8ca58336b0c5b061b3c03c0a646fe08b616c (patch)
tree33f382564de2f6b9a916cf825fe3eb178d3405fd /gcc/rtlanal.c
parent8801187868ac319744b6cd55ca3a1f37502d538f (diff)
downloadgcc-cedd8ca58336b0c5b061b3c03c0a646fe08b616c.zip
gcc-cedd8ca58336b0c5b061b3c03c0a646fe08b616c.tar.gz
gcc-cedd8ca58336b0c5b061b3c03c0a646fe08b616c.tar.bz2
re PR middle-end/80929 (Division with constant no more optimized to mult highpart)
PR middle-end/80929 * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost. From-SVN: r255228
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index beb24ba..c91f3f1 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -5341,8 +5341,14 @@ seq_cost (const rtx_insn *seq, bool speed)
set = single_set (seq);
if (set)
cost += set_rtx_cost (set, speed);
- else
- cost++;
+ else if (NONDEBUG_INSN_P (seq))
+ {
+ int this_cost = insn_cost (CONST_CAST_RTX_INSN (seq), speed);
+ if (this_cost > 0)
+ cost += this_cost;
+ else
+ cost++;
+ }
}
return cost;