h8300.c (h8300_adjust_insn_length): Tighten insn length for memory load/store.
authorKazu Hirata <kazu@hxi.com>
Fri, 8 Mar 2002 16:51:08 +0000 (16:51 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Fri, 8 Mar 2002 16:51:08 +0000 (16:51 +0000)
* config/h8300/h8300.c (h8300_adjust_insn_length): Tighten
insn length for memory load/store.

From-SVN: r50445

gcc/ChangeLog
gcc/config/h8300/h8300.c

index 1302bc2..de93f0e 100644 (file)
@@ -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.
index 456577a..b5fcf25 100644 (file)
@@ -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;
        }
     }