aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-07-05 17:59:09 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-07-05 17:59:09 -0400
commit26f1a00ea1cbe0d9785292e5bb900ca2837647f5 (patch)
treeaf83022a2ba3abdb67b3e9c750525c043dcdcbde
parentbc0776c6205c3f0804cb607214ff51c7eab20a18 (diff)
downloadgcc-26f1a00ea1cbe0d9785292e5bb900ca2837647f5.zip
gcc-26f1a00ea1cbe0d9785292e5bb900ca2837647f5.tar.gz
gcc-26f1a00ea1cbe0d9785292e5bb900ca2837647f5.tar.bz2
(subst_reloads): Don't use gen_lowpart_common to get reload register
into proper mode. From-SVN: r4854
-rw-r--r--gcc/reload.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index 35fe843..eacea86 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -4659,9 +4659,11 @@ subst_reloads ()
if (reloadreg)
{
/* Encapsulate RELOADREG so its machine mode matches what
- used to be there. */
+ used to be there. Note that gen_lowpart_common will
+ do the wrong thing if RELOADREG is multi-word. RELOADREG
+ will always be a REG here. */
if (GET_MODE (reloadreg) != r->mode && r->mode != VOIDmode)
- reloadreg = gen_lowpart_common (r->mode, reloadreg);
+ reloadreg = gen_rtx (REG, r->mode, REGNO (reloadreg));
/* If we are putting this into a SUBREG and RELOADREG is a
SUBREG, we would be making nested SUBREGs, so we have to fix