combine: Use correct mode in new comparison (PR86902)
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 19 Sep 2018 17:38:11 +0000 (19:38 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 19 Sep 2018 17:38:11 +0000 (19:38 +0200)
This code in try_combine uses the wrong mode.  This fails (with RTL
checking) in trunk, but not in any released branches.

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.

From-SVN: r264426

gcc/ChangeLog
gcc/combine.c

index cf3d66a6c03cbfb11a71b98d4c0f3c8020e52541..cfd874937b5235341e4c03ffaff0897b3e25b468 100644 (file)
@@ -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
index a2649b6d5a1cfe2a6192a2a896e38852eb72320a..60cfe972aaf4c9ea4c1569efd1db3b8ace04c9bc 100644 (file)
@@ -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: