diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-11-29 11:31:36 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-11-29 11:31:36 +0100 |
commit | cedd8ca58336b0c5b061b3c03c0a646fe08b616c (patch) | |
tree | 33f382564de2f6b9a916cf825fe3eb178d3405fd /gcc/rtlanal.c | |
parent | 8801187868ac319744b6cd55ca3a1f37502d538f (diff) | |
download | gcc-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.c | 10 |
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; |