From 184ef18e6a32fe5c97037aa4f6ea9f36ba1890f0 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 31 Jul 2000 12:51:11 +0000 Subject: [PATCH] h8300.h (MODES_TIEABLE_P): Accept a combination of QImode and HImode on all architectures and a... * 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 | 4 ++++ gcc/config/h8300/h8300.h | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d1d5440c61f..22101886fe2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2000-07-31 Kazu Hirata + * 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 diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index 5c4604a86e1..6e6bd448289 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -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. */ -- 2.30.2