diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/combine.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cf3d66a..cfd8749 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-09-19 Segher Boessenkool <segher@kernel.crashing.org> + + PR rtl-optimization/86902 + * combine.c (try_combine): When changing the CC mode used, don't change + an unrelated mode in other_insn to that new CC mode. + 2018-09-19 David Malcolm <dmalcolm@redhat.com> * tree-data-ref.c (runtime_alias_check_p): Use formatted printing diff --git a/gcc/combine.c b/gcc/combine.c index a2649b6..60cfe97 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3310,7 +3310,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, { /* Replace cc_use_loc with entire new RTX. */ SUBST (*cc_use_loc, - gen_rtx_fmt_ee (compare_code, compare_mode, + gen_rtx_fmt_ee (compare_code, GET_MODE (*cc_use_loc), newpat_dest, const0_rtx)); undobuf.other_insn = cc_use_insn; } @@ -3319,7 +3319,7 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, /* Just replace the CC reg with a new mode. */ SUBST (XEXP (*cc_use_loc, 0), newpat_dest); undobuf.other_insn = cc_use_insn; - } + } } /* Now we modify the current newpat: |