diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2016-12-06 07:03:04 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-12-06 07:03:04 +0000 |
commit | d7ae3739a200ea1c90ca20afbebfc627ee32cf49 (patch) | |
tree | 3c799d29f383e335c4ef47d97f877bdcbe8fc694 | |
parent | 1d2ccddf2ea8b648b8520c7a844d6259b0f31ff7 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 15 |
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; |