diff options
author | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-11-29 17:33:59 +0000 |
---|---|---|
committer | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-11-29 17:33:59 +0000 |
commit | 90489f58c23298d23fdfbc7967783e7c6f4d3d49 (patch) | |
tree | e78160a35391b3a8c25d75660bc057354bc86734 /gcc/jump.c | |
parent | 1938ef464c6d60e2fb8e83827cd29a86d1d0b3c8 (diff) | |
download | gcc-90489f58c23298d23fdfbc7967783e7c6f4d3d49.tar.gz |
* config/rs6000/predicates.md (gpc_reg_operand): Check
invalid_e500_subreg.
* config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
SImode subregs of SPE vectors.
* config/rs6000/rs6000.md (insv): Fail for invalid E500 subregs.
* jump.c (true_regnum): Require subregs to satisfy
subreg_offset_representable_p.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119324 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jump.c')
-rw-r--r-- | gcc/jump.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/jump.c b/gcc/jump.c index 807f2c6f7d6..567017004f5 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -1951,7 +1951,11 @@ true_regnum (rtx x) if (GET_CODE (x) == SUBREG) { int base = true_regnum (SUBREG_REG (x)); - if (base >= 0 && base < FIRST_PSEUDO_REGISTER) + if (base >= 0 + && base < FIRST_PSEUDO_REGISTER + && subreg_offset_representable_p (REGNO (SUBREG_REG (x)), + GET_MODE (SUBREG_REG (x)), + SUBREG_BYTE (x), GET_MODE (x))) return base + subreg_regno_offset (REGNO (SUBREG_REG (x)), GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x), GET_MODE (x)); |