diff options
-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; |