diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-07-31 08:15:14 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-07-31 08:15:14 -0400 |
commit | 3dc4195c6a0777d896bdd5c11691d80c54064bbe (patch) | |
tree | f3192c80d8abf6d2f979e17e5e1113374912dcd0 | |
parent | 58c8c59349b32c5f8ced092c74d2918580c218f0 (diff) | |
download | gcc-3dc4195c6a0777d896bdd5c11691d80c54064bbe.zip gcc-3dc4195c6a0777d896bdd5c11691d80c54064bbe.tar.gz gcc-3dc4195c6a0777d896bdd5c11691d80c54064bbe.tar.bz2 |
(convert_move): Put FROM into a register if it is a SUBREG.
From-SVN: r1732
-rw-r--r-- | gcc/expr.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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; } |