aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-12-06 07:03:04 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-12-06 07:03:04 +0000
commitd7ae3739a200ea1c90ca20afbebfc627ee32cf49 (patch)
tree3c799d29f383e335c4ef47d97f877bdcbe8fc694 /gcc
parent1d2ccddf2ea8b648b8520c7a844d6259b0f31ff7 (diff)
downloadgcc-d7ae3739a200ea1c90ca20afbebfc627ee32cf49.zip
gcc-d7ae3739a200ea1c90ca20afbebfc627ee32cf49.tar.gz
gcc-d7ae3739a200ea1c90ca20afbebfc627ee32cf49.tar.bz2
re PR middle-end/78642 (invalid rtl sharing found in the insn)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/emit-rtl.c15
2 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 672b604..38e86cf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 4650540..5201bd0 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -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;