aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-11-22 02:09:49 +0000
committerJeff Law <law@gcc.gnu.org>1998-11-21 19:09:49 -0700
commit2268cc528815583a0ee54e1a5ba452f2ee5f709c (patch)
tree03959330fb4fcd4c1ee250069920a91dce3f25de /gcc
parent67389d50a88ea83e38922a34e8e1e59124a28b93 (diff)
downloadgcc-2268cc528815583a0ee54e1a5ba452f2ee5f709c.zip
gcc-2268cc528815583a0ee54e1a5ba452f2ee5f709c.tar.gz
gcc-2268cc528815583a0ee54e1a5ba452f2ee5f709c.tar.bz2
v850.c (ep_memory_operand): Offsets < 0 are not valid for EP addressing modes.
* v850.c (ep_memory_operand): Offsets < 0 are not valid for EP addressing modes. (v850_reorg): Similarly. From-SVN: r23747
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/v850/v850.c7
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7253ffa..5f2ef26 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
Sat Nov 21 22:12:09 1998 Jeffrey A Law (law@cygnus.com)
+ * v850.c (ep_memory_operand): Offsets < 0 are not valid for EP
+ addressing modes.
+ (v850_reorg): Similarly.
+
* loop.c (check_dbra_loop): Avoid using gen_add2_insn.
Sat Nov 21 02:18:38 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index 319b6ab..cda00f0 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -944,6 +944,7 @@ ep_memory_operand (op, mode, unsigned_load)
op1 = XEXP (addr, 1);
if (GET_CODE (op1) == CONST_INT
&& INTVAL (op1) < max_offset
+ && INTVAL (op1) >= 0
&& (INTVAL (op1) & mask) == 0)
{
if (GET_CODE (op0) == REG && REGNO (op0) == EP_REGNUM)
@@ -1149,7 +1150,8 @@ Saved %d bytes (%d uses of register %s) in function %s, starting as insn %d, end
&& GET_CODE (XEXP (addr, 1)) == CONST_INT
&& ((INTVAL (XEXP (addr, 1)))
< ep_memory_offset (GET_MODE (*p_mem),
- unsignedp)))
+ unsignedp))
+ && ((INTVAL (XEXP (addr, 1))) >= 0))
*p_mem = change_address (*p_mem, VOIDmode,
gen_rtx (PLUS, Pmode,
*p_ep, XEXP (addr, 1)));
@@ -1300,7 +1302,8 @@ void v850_reorg (start_insn)
&& GET_CODE (XEXP (addr, 0)) == REG
&& GET_CODE (XEXP (addr, 1)) == CONST_INT
&& ((INTVAL (XEXP (addr, 1)))
- < ep_memory_offset (GET_MODE (mem), unsignedp)))
+ < ep_memory_offset (GET_MODE (mem), unsignedp))
+ && ((INTVAL (XEXP (addr, 1))) >= 0))
{
short_p = TRUE;
regno = REGNO (XEXP (addr, 0));