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 | |
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
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/rtlanal.c | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 26c3d24..483c02a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2017-11-29 Jakub Jelinek <jakub@redhat.com> + PR middle-end/80929 + * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost. + PR target/80819 * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm) alternative. 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; |