From: aoliva Date: Sat, 11 Nov 2000 05:54:02 +0000 (+0000) Subject: * config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6109c3ffc8305519fde7b4e45b6d8f4d03bb87ec;p=thirdparty%2Fgcc.git * config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP modes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37380 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b94b70eb8f0d..0b2e121efded 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-11-11 Alexandre Oliva + + * config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP + modes. + 2000-11-10 Joseph S. Myers * gcc.texi, gcov.texi: Update dates and version numbers. diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 330fe2db0b0a..0e7105295c29 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -537,10 +537,15 @@ do { \ /* Value is 1 if it is a good idea to tie two pseudo registers 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. */ + for any hard reg, then this must be 0 for correct output. + That's the case for xd registers: we don't hold SFmode values in + them, so we can't tie an SFmode pseudos with one in another + floating-point mode. */ #define MODES_TIEABLE_P(MODE1, MODE2) \ - ((MODE1) == (MODE2) || GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2)) + ((MODE1) == (MODE2) \ + || (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2) \ + && (MODE1) != SFmode && (MODE2) != SFmode)) /* Specify the registers used for certain standard purposes. The values of these macros are register numbers. */