combine: Don't do make_more_copies for dest PC (PR87720)
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 24 Oct 2018 22:34:40 +0000 (00:34 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 24 Oct 2018 22:34:40 +0000 (00:34 +0200)
Jumps are written in RTL as moves to PC.  But the latter has no mode,
so we shouldn't try to use it.  Since the optimization this routine
does does not really help for jumps at all, let's just skip it.

PR rtl-optimization/87720
* combine.c (make_more_copies): Skip if the dest is pc_rtx.

From-SVN: r265474

gcc/ChangeLog
gcc/combine.c

index fdfca8ba6bc3768319e1bb2333470caf2e55142d..da93f6f88676e341d877ee22e0f722d210315f2b 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-24  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/87720
+       * combine.c (make_more_copies): Skip if the dest is pc_rtx.
+
 2018-10-24  Alexandre Oliva <aoliva@redhat.com>
 
        * gimple-ssa-isolate-paths.c
index 8ec6809c05c1f92119caa4f267c9307521e96110..2b9332893922c7dc68ec3bcc522748ac6ab4a6a9 100644 (file)
@@ -14958,6 +14958,8 @@ make_more_copies (void)
            continue;
          rtx src = SET_SRC (set);
          rtx dest = SET_DEST (set);
+         if (dest == pc_rtx)
+           continue;
          if (GET_CODE (src) == SUBREG)
            src = SUBREG_REG (src);
          if (!(REG_P (src) && HARD_REGISTER_P (src)))