diff options
author | Joseph Myers <joseph@codesourcery.com> | 2006-11-29 17:33:59 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2006-11-29 17:33:59 +0000 |
commit | 14502dad061deb34939adf92cb5ea35a06f1da34 (patch) | |
tree | e78160a35391b3a8c25d75660bc057354bc86734 /gcc/jump.c | |
parent | d315c4a9f8367f9452ff6afd3a49d9a3b6fa3105 (diff) | |
download | gcc-14502dad061deb34939adf92cb5ea35a06f1da34.zip gcc-14502dad061deb34939adf92cb5ea35a06f1da34.tar.gz gcc-14502dad061deb34939adf92cb5ea35a06f1da34.tar.bz2 |
predicates.md (gpc_reg_operand): Check invalid_e500_subreg.
* 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.
From-SVN: r119324
Diffstat (limited to 'gcc/jump.c')
-rw-r--r-- | gcc/jump.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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)); |