re PR middle-end/78642 (invalid rtl sharing found in the insn)
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 6 Dec 2016 07:03:04 +0000 (07:03 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 6 Dec 2016 07:03:04 +0000 (07:03 +0000)
PR middle-end/78642
* emit-rtl.c (verify_rtx_sharing) <CLOBBER>: Relax condition.
(copy_rtx_if_shared_1) <CLOBBER>: Likewise.
(copy_insn_1) <CLOBBER>: Likewise.

From-SVN: r243282

gcc/ChangeLog
gcc/emit-rtl.c

index 672b6040fb580c43fd906832d8eef185af620925..38e86cfd707e7cb1c465fc6b5518fbd212b71f8c 100644 (file)
@@ -1,3 +1,10 @@
+2016-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/78642
+       * emit-rtl.c (verify_rtx_sharing) <CLOBBER>: Relax condition.
+       (copy_rtx_if_shared_1) <CLOBBER>: Likewise.
+       (copy_insn_1) <CLOBBER>: Likewise.
+
 2016-12-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        PR target/78688
index 46505400723b4fdf9c83b320bf189ffd235847b8..5201bd0e0ef9c7dbd53e9534fd4cab351cc31d16 100644 (file)
@@ -2718,8 +2718,9 @@ verify_rtx_sharing (rtx orig, rtx insn)
       /* Share clobbers of hard registers (like cc0), but do not share pseudo reg
          clobbers or clobbers of hard registers that originated as pseudos.
          This is needed to allow safe register renaming.  */
-      if (REG_P (XEXP (x, 0)) && REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER
-         && ORIGINAL_REGNO (XEXP (x, 0)) == REGNO (XEXP (x, 0)))
+      if (REG_P (XEXP (x, 0))
+         && HARD_REGISTER_NUM_P (REGNO (XEXP (x, 0)))
+         && HARD_REGISTER_NUM_P (ORIGINAL_REGNO (XEXP (x, 0))))
        return;
       break;
 
@@ -2970,8 +2971,9 @@ repeat:
       /* Share clobbers of hard registers (like cc0), but do not share pseudo reg
          clobbers or clobbers of hard registers that originated as pseudos.
          This is needed to allow safe register renaming.  */
-      if (REG_P (XEXP (x, 0)) && REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER
-         && ORIGINAL_REGNO (XEXP (x, 0)) == REGNO (XEXP (x, 0)))
+      if (REG_P (XEXP (x, 0))
+         && HARD_REGISTER_NUM_P (REGNO (XEXP (x, 0)))
+         && HARD_REGISTER_NUM_P (ORIGINAL_REGNO (XEXP (x, 0))))
        return;
       break;
 
@@ -5521,8 +5523,9 @@ copy_insn_1 (rtx orig)
       /* Share clobbers of hard registers (like cc0), but do not share pseudo reg
          clobbers or clobbers of hard registers that originated as pseudos.
          This is needed to allow safe register renaming.  */
-      if (REG_P (XEXP (orig, 0)) && REGNO (XEXP (orig, 0)) < FIRST_PSEUDO_REGISTER
-         && ORIGINAL_REGNO (XEXP (orig, 0)) == REGNO (XEXP (orig, 0)))
+      if (REG_P (XEXP (orig, 0))
+         && HARD_REGISTER_NUM_P (REGNO (XEXP (orig, 0)))
+         && HARD_REGISTER_NUM_P (ORIGINAL_REGNO (XEXP (orig, 0))))
        return orig;
       break;