diff options
author | DJ Delorie <dj@redhat.com> | 2013-10-16 18:55:34 -0400 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2013-10-16 18:55:34 -0400 |
commit | c71aed477a177675e0887142a4a045c527860d51 (patch) | |
tree | e90cd61c0ac966941bd65ee7e68d43a0af66c6c3 /gcc | |
parent | 703344ca91aeb9ffce1070f3e713211248c83e94 (diff) | |
download | gcc-c71aed477a177675e0887142a4a045c527860d51.zip gcc-c71aed477a177675e0887142a4a045c527860d51.tar.gz gcc-c71aed477a177675e0887142a4a045c527860d51.tar.bz2 |
rl78.c (rl78_alloc_address_registers_macax): Verify op is a REG before checking REGNO.
* config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify
op is a REG before checking REGNO.
(rl78_alloc_physical_registers): Verify pattern is a SET before
checking SET_SRC.
From-SVN: r203733
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rl78/rl78.c | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b82bd5..83541b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-10-16 DJ Delorie <dj@redhat.com> + + * config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify + op is a REG before checking REGNO. + (rl78_alloc_physical_registers): Verify pattern is a SET before + checking SET_SRC. + 2013-10-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * gcc/config/rs6000/vector.md (vec_unpacks_hi_v4sf): Correct for diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c index 0e385962..995f3b1 100644 --- a/gcc/config/rl78/rl78.c +++ b/gcc/config/rl78/rl78.c @@ -3050,7 +3050,8 @@ rl78_alloc_address_registers_macax (rtx insn) OP (op) = transcode_memory_rtx (OP (op), HL, insn); if (op == 2 && MEM_P (OP (op)) - && (REGNO (XEXP (OP (op), 0)) == SP_REG + && ((GET_CODE (XEXP (OP (op), 0)) == REG + && REGNO (XEXP (OP (op), 0)) == SP_REG) || (GET_CODE (XEXP (OP (op), 0)) == PLUS && REGNO (XEXP (XEXP (OP (op), 0), 0)) == SP_REG))) { @@ -3140,7 +3141,8 @@ rl78_alloc_physical_registers (void) if (GET_CODE (pattern) != SET && GET_CODE (pattern) != CALL) continue; - if (GET_CODE (SET_SRC (pattern)) == ASM_OPERANDS) + if (GET_CODE (pattern) == SET + && GET_CODE (SET_SRC (pattern)) == ASM_OPERANDS) continue; valloc_method = get_attr_valloc (insn); |