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 /gcc/reload1.c | |
parent | 97fb4325c9a48a9d5d0bc8812ada6129ec2cd6b6 (diff) | |
download | gcc-190dde92df54043ff9a3f30dfb4ac6077fa158be.tar.gz |
* 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
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 10 |
1 files changed, 7 insertions, 3 deletions
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); |