diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/combine.c | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 62ca3dc..c13f67e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2017-11-29 Segher Boessenkool <segher@kernel.crashing.org> + PR rtl-optimization/83156 + PR rtl-optimization/82621 + * combine.c (try_combine): Don't split an I2 if one of the dests is + set again before I3. Allow unused dests. + +2017-11-29 Segher Boessenkool <segher@kernel.crashing.org> + * config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New. 2017-11-29 Vladimir Makarov <vmakarov@redhat.com> diff --git a/gcc/combine.c b/gcc/combine.c index 0ce0751..cfe24f4 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3016,7 +3016,8 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, && can_split_parallel_of_n_reg_sets (i2, 2) && !reg_used_between_p (SET_DEST (XVECEXP (PATTERN (i2), 0, 0)), i2, i3) && !reg_used_between_p (SET_DEST (XVECEXP (PATTERN (i2), 0, 1)), i2, i3) - && !find_reg_note (i2, REG_UNUSED, 0)) + && !reg_set_between_p (SET_DEST (XVECEXP (PATTERN (i2), 0, 0)), i2, i3) + && !reg_set_between_p (SET_DEST (XVECEXP (PATTERN (i2), 0, 1)), i2, i3)) { /* If there is no I1, there is no I0 either. */ i0 = i1; |