diff options
author | Jeffrey A Law <law@cygnus.com> | 2001-03-15 19:55:43 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2001-03-15 12:55:43 -0700 |
commit | b216e516b8d9c93d229d6a66cde700ef77263ad7 (patch) | |
tree | 9e1a0d078ed3e8135de8ee0fb54cfe541b0196f1 | |
parent | bb2cf916da4251c227826f82e945d8c90dbd552b (diff) | |
download | gcc-b216e516b8d9c93d229d6a66cde700ef77263ad7.zip gcc-b216e516b8d9c93d229d6a66cde700ef77263ad7.tar.gz gcc-b216e516b8d9c93d229d6a66cde700ef77263ad7.tar.bz2 |
reload1.c (reload_cse_simplify_set): For LOAD_EXTEND_OP, do not "widen" a destination that is already wider than a word.
* reload1.c (reload_cse_simplify_set): For LOAD_EXTEND_OP, do not
"widen" a destination that is already wider than a word. Also do
not widen if LOAD_EXTEND_OP is NIL for the given mode.
From-SVN: r40510
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reload1.c | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3ae6198..0861264 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Mar 15 12:57:14 2001 Jeffrey A Law (law@cygnus.com) + + * reload1.c (reload_cse_simplify_set): For LOAD_EXTEND_OP, do not + "widen" a destination that is already wider than a word. Also do + not widen if LOAD_EXTEND_OP is NIL for the given mode. + 2001-03-15 Bernd Schmidt <bernds@redhat.com> * config/ia64/ia64.c (ia64_sched_reorder): Remove debugging aids. diff --git a/gcc/reload1.c b/gcc/reload1.c index 2f64c2d..39d1cc3 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -8279,9 +8279,13 @@ reload_cse_simplify_set (set, insn) && GET_CODE (SET_SRC (set)) != REG)) { #ifdef LOAD_EXTEND_OP - rtx wide_dest = gen_rtx_REG (word_mode, REGNO (SET_DEST (set))); - ORIGINAL_REGNO (wide_dest) = ORIGINAL_REGNO (SET_DEST (set)); - validate_change (insn, &SET_DEST (set), wide_dest, 1); + if (GET_MODE_BITSIZE (GET_MODE (SET_DEST (set))) < BITS_PER_WORD + && extend_op != NIL) + { + rtx wide_dest = gen_rtx_REG (word_mode, REGNO (SET_DEST (set))); + ORIGINAL_REGNO (wide_dest) = ORIGINAL_REGNO (SET_DEST (set)); + validate_change (insn, &SET_DEST (set), wide_dest, 1); + } #endif validate_change (insn, &SET_SRC (set), copy_rtx (this_rtx), 1); |