diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1996-08-05 14:27:22 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1996-08-05 14:27:22 -0700 |
commit | 519164a9ede028adf015270894441fb30433d969 (patch) | |
tree | 17584a61cabfdf339af8116200b0e9cb6a61cb65 | |
parent | a5049cf050b2b2f581c10201683176524fae15c3 (diff) | |
download | gcc-519164a9ede028adf015270894441fb30433d969.zip gcc-519164a9ede028adf015270894441fb30433d969.tar.gz gcc-519164a9ede028adf015270894441fb30433d969.tar.bz2 |
(arith_reg_operand): Reject SUBREG of an invalid hard reg.
From-SVN: r12594
-rw-r--r-- | gcc/config/sh/sh.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 6b8cc72..834e60b 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -2198,13 +2198,17 @@ arith_reg_operand (op, mode) { if (register_operand (op, mode)) { + int regno; + if (GET_CODE (op) == REG) - return (REGNO (op) != T_REG - && REGNO (op) != PR_REG - && REGNO (op) != FPUL_REG - && REGNO (op) != MACH_REG - && REGNO (op) != MACL_REG); - return 1; + regno = REGNO (op); + else if (GET_CODE (op) == SUBREG && GET_CODE (SUBREG_REG (op)) == REG) + regno = REGNO (SUBREG_REG (op)); + else + return 1; + + return (regno != T_REG && regno != PR_REG && regno != FPUL_REG + && regno != MACH_REG && regno != MACL_REG); } return 0; } |