diff options
| author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-03-15 19:55:43 +0000 |
|---|---|---|
| committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-03-15 19:55:43 +0000 |
| commit | 190dde92df54043ff9a3f30dfb4ac6077fa158be (patch) | |
| tree | 9e1a0d078ed3e8135de8ee0fb54cfe541b0196f1 | |
| parent | 97fb4325c9a48a9d5d0bc8812ada6129ec2cd6b6 (diff) | |
| download | ppe42-gcc-190dde92df54043ff9a3f30dfb4ac6077fa158be.tar.gz ppe42-gcc-190dde92df54043ff9a3f30dfb4ac6077fa158be.zip | |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40510 138bc75d-0d04-0410-961f-82ee72b054a4
| -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 3ae6198497e..086126495b5 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 2f64c2d7d4a..39d1cc3383c 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); |

