diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b82bd5470b..83541b2ce80 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-10-16 DJ Delorie + + * 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 * 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 0e385962ab1..995f3b1754d 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);