reload1.c (reload_cse_simplify_set): For LOAD_EXTEND_OP, do not "widen" a destination...
authorJeffrey A Law <law@cygnus.com>
Thu, 15 Mar 2001 19:55:43 +0000 (19:55 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 15 Mar 2001 19:55:43 +0000 (12:55 -0700)
        * 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

gcc/ChangeLog
gcc/reload1.c

index 3ae6198497eb0f257c1d36fea0af0ae214ead13c..086126495b5d0e7d69da804247b675d1e6998f01 100644 (file)
@@ -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.
index 2f64c2d7d4a044c70c897e826af071e09ec93e8f..39d1cc3383cece351b7f018833aff8c54b7e0b41 100644 (file)
@@ -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);