aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2013-10-16 18:55:34 -0400
committerDJ Delorie <dj@gcc.gnu.org>2013-10-16 18:55:34 -0400
commitc71aed477a177675e0887142a4a045c527860d51 (patch)
treee90cd61c0ac966941bd65ee7e68d43a0af66c6c3 /gcc
parent703344ca91aeb9ffce1070f3e713211248c83e94 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/rl78/rl78.c6
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);