aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2000-11-11 05:54:02 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2000-11-11 05:54:02 +0000
commit93a77848075d53362d57c21736c8baa141afe468 (patch)
tree666b02f4e23ffb763170a7f1d9ba48faf8c19130 /gcc
parent585ddf9c47fb750de8713634a5e93ed4fe55814a (diff)
downloadgcc-93a77848075d53362d57c21736c8baa141afe468.zip
gcc-93a77848075d53362d57c21736c8baa141afe468.tar.gz
gcc-93a77848075d53362d57c21736c8baa141afe468.tar.bz2
sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP modes.
* config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP modes. From-SVN: r37380
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/sh.h9
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b94b70e..0b2e121 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-11-11 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/sh/sh.h (MODES_TIEABLE_P): Don't tie SFmode to other FP
+ modes.
+
2000-11-10 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc.texi, gcov.texi: Update dates and version numbers.
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 330fe2d..0e71052 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. */