h8300.h (MODES_TIEABLE_P): Accept a combination of QImode and HImode on all architect...
authorKazu Hirata <kazu@hxi.com>
Mon, 31 Jul 2000 12:51:11 +0000 (12:51 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 31 Jul 2000 12:51:11 +0000 (06:51 -0600)
        * h8300.h (MODES_TIEABLE_P): Accept a combination of QImode and
        HImode on all architectures and a combination of HImode and SImode
        on H8/300H and H8/S.

From-SVN: r35372

gcc/ChangeLog
gcc/config/h8300/h8300.h

index d1d5440c61f183e849420ee15ad1d32b13927411..22101886fe2931c3a51ac038023c12913fa385f9 100644 (file)
@@ -1,5 +1,9 @@
 2000-07-31  Kazu Hirata  <kazu@hxi.com>
 
+       * h8300.h (MODES_TIEABLE_P): Accept a combination of QImode and
+       HImode on all architectures and a combination of HImode and SImode
+       on H8/300H and H8/S.
+
        * h8300.c (split_adds_subs): Rearrange code for conciseness.
 
 Mon Jul 31 12:27:55 MET DST 2000  Jan Hubicka  <jh@suse.cz>
index 5c4604a86e1e9ace16d67d43ab2e691f03f0f263..6e6bd4482894adee893afa2001385e9e47b54793 100644 (file)
@@ -308,7 +308,13 @@ do {                               \
    when one has mode MODE1 and one has mode MODE2.
    If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2,
    for any hard reg, then this must be 0 for correct output.  */
-#define MODES_TIEABLE_P(MODE1, MODE2)  ((MODE1) == (MODE2))
+#define MODES_TIEABLE_P(MODE1, MODE2)                                  \
+  ((MODE1) == (MODE2)                                                  \
+   || ((MODE1) == HImode && (MODE2) == QImode)                         \
+   || ((MODE1) == QImode && (MODE2) == HImode)                         \
+   || ((TARGET_H8300H || TARGET_H8300S)                                        \
+       && (((MODE1) == SImode && (MODE2) == HImode)                    \
+          || ((MODE1) == HImode && (MODE2) == SImode))))
 
 /* Specify the registers used for certain standard purposes.
    The values of these macros are register numbers.  */