summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2002-03-08 16:51:08 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2002-03-08 16:51:08 +0000
commit320e354f6ba13ff071da367b70d3dbc806fae41c (patch)
treef9d8c835ab0963b70f9f6832faa58926e7769b7b
parente9cf3fd507bef672191919cfaf42329301519727 (diff)
downloadppe42-gcc-320e354f6ba13ff071da367b70d3dbc806fae41c.tar.gz
ppe42-gcc-320e354f6ba13ff071da367b70d3dbc806fae41c.zip
* config/h8300/h8300.c (h8300_adjust_insn_length): Tighten
insn length for memory load/store. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50445 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/h8300/h8300.c17
2 files changed, 19 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1302bc2e888..de93f0e36a9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-03-08 Kazu Hirata <kazu@hxi.com>
+
+ * config/h8300/h8300.c (h8300_adjust_insn_length): Tighten
+ insn length for memory load/store.
+
2002-03-08 Craig Rodrigues <rodrigc@gcc.gnu.org>
* doc/install.texi (--with-libiconv-prefix): Document.
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 456577a7a76..b5fcf25688b 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -3549,9 +3549,20 @@ h8300_adjust_insn_length (insn, length)
&& INTVAL (XEXP (addr, 1)) < 32767)
return -4;
- /* @aa:16 is 2 bytes shorter than the longest. */
- if (GET_CODE (addr) == SYMBOL_REF
- && TINY_DATA_NAME_P (XSTR (addr, 0)))
+ /* @aa:8 is 6 bytes shorter than the longest. */
+ if (GET_MODE (SET_SRC (pat)) == QImode
+ && ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr))
+ || EIGHTBIT_CONSTANT_ADDRESS_P (addr)))
+ return -6;
+
+ /* @aa:16 is 4 bytes shorter than the longest. */
+ if ((GET_CODE (addr) == SYMBOL_REF
+ && TINY_DATA_NAME_P (XSTR (addr, 0)))
+ || TINY_CONSTANT_ADDRESS_P (addr))
+ return -4;
+
+ /* @aa:24 is 2 bytes shorter than the longest. */
+ if (GET_CODE (addr) == CONST_INT)
return -2;
}
}
OpenPOWER on IntegriCloud