OSDN Git Service

(convert_move): Put FROM into a register if it is a SUBREG.
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Jul 1992 12:15:14 +0000 (12:15 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Jul 1992 12:15:14 +0000 (12:15 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@1732 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/expr.c

index 1e4191f..8bb7e41 100644 (file)
@@ -705,6 +705,12 @@ convert_move (to, from, unsignedp)
       if ((code = can_extend_p (to_mode, from_mode, unsignedp))
          != CODE_FOR_nothing)
        {
+         /* If FROM is a SUBREG, put it into a register.  Do this
+            so that we always generate the same set of insns for
+            better cse'ing; if an intermediate assignment occurred,
+            we won't be doing the operation directly on the SUBREG.  */
+         if (optimize > 0 && GET_CODE (from) == SUBREG)
+           from = force_reg (from_mode, from);
          emit_unop_insn (code, to, from, equiv_code);
          return;
        }