(convert_move): Don't access a hard reg in an invalid mode when doing
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 25 Apr 1995 21:05:37 +0000 (17:05 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 25 Apr 1995 21:05:37 +0000 (17:05 -0400)
a truncation.

From-SVN: r9447

gcc/expr.c

index 656d8254002f64a5cfd40c7dcd6c7ee5127728b6..c76feb013526ae376745172e80a814e837f45fd2 100644 (file)
@@ -1081,6 +1081,9 @@ convert_move (to, from, unsignedp)
            || GET_CODE (from) == REG
            || GET_CODE (from) == SUBREG))
        from = force_reg (from_mode, from);
+      if (GET_CODE (from) == REG && REGNO (from) < FIRST_PSEUDO_REGISTER
+         && ! HARD_REGNO_MODE_OK (REGNO (from), to_mode))
+       from = copy_to_reg (from);
       emit_move_insn (to, gen_lowpart (to_mode, from));
       return;
     }