diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-25 17:05:37 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-25 17:05:37 -0400 |
commit | 34aa3599f159bba2ea3fdc9a08324402d8003b89 (patch) | |
tree | ee2e261e263b54d3e3b90661f27226889b62962a | |
parent | c89e8dc28f98fbe84c9e4b3edbfa2c38094c16e6 (diff) | |
download | gcc-34aa3599f159bba2ea3fdc9a08324402d8003b89.zip gcc-34aa3599f159bba2ea3fdc9a08324402d8003b89.tar.gz gcc-34aa3599f159bba2ea3fdc9a08324402d8003b89.tar.bz2 |
(convert_move): Don't access a hard reg in an invalid mode when doing
a truncation.
From-SVN: r9447
-rw-r--r-- | gcc/expr.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -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; } |