diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1997-05-18 08:50:22 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1997-05-18 08:50:22 -0400 |
commit | 6e848450718f16cd67bb8677205034c22a130cbb (patch) | |
tree | 4778dd3432e8f407da1304c0d95df8cbf584e459 /gcc/reload1.c | |
parent | 2ae3dcac7b4c2901bda0ff9b4fc6768309c35f42 (diff) | |
download | gcc-6e848450718f16cd67bb8677205034c22a130cbb.zip gcc-6e848450718f16cd67bb8677205034c22a130cbb.tar.gz gcc-6e848450718f16cd67bb8677205034c22a130cbb.tar.bz2 |
(reload_cse_regno_equal_p): Check for value using more than one
register on a big endian machine.
From-SVN: r14088
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 199ae68..62ac6d7 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -7980,6 +7980,14 @@ reload_cse_regno_equal_p (regno, val, mode) && (GET_CODE (val) != CONST_INT || mode == GET_MODE (x) || (GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (x)) + /* On a big endian machine if the value spans more than + one register then this register holds the high part of + it and we can't use it. + + ??? We should also compare with the high part of the + value. */ + && !(WORDS_BIG_ENDIAN + && HARD_REGNO_NREGS (regno, GET_MODE (x)) > 1) && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (mode), GET_MODE_BITSIZE (GET_MODE (x)))))) return 1; |