aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-01-19 22:31:21 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2001-01-19 22:31:21 +0000
commit68c37dc9015b5dd1a5692bdf5d4e8729caac40b7 (patch)
tree8741eee65669b2f7c4ca4ca9be84c89afea62572
parent111e0469cef8474f5ace78075960fcb785b1806f (diff)
downloadgcc-68c37dc9015b5dd1a5692bdf5d4e8729caac40b7.zip
gcc-68c37dc9015b5dd1a5692bdf5d4e8729caac40b7.tar.gz
gcc-68c37dc9015b5dd1a5692bdf5d4e8729caac40b7.tar.bz2
sh.c (prepare_move_operands): Use operands[0] as temporary if no_new_pseudos.
* config/sh/sh.c (prepare_move_operands) [PIC]: Use operands[0] as temporary if no_new_pseudos. From-SVN: r39145
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sh/sh.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 24f4796..0f050d4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-01-19 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/sh/sh.c (prepare_move_operands) [PIC]: Use operands[0] as
+ temporary if no_new_pseudos.
+
2001-01-19 Neil Booth <neil@daikokuya.demon.co.uk>
* cppinternals.texi: Update.
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index ce50f51..c89db66 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -475,11 +475,14 @@ prepare_move_operands (operands, mode)
&& GET_CODE (XEXP (operands[1], 0)) == PLUS
&& SYMBOLIC_CONST_P (XEXP (XEXP (operands[1], 0), 0)))
{
+ temp = no_new_pseudos ? operands[0] : gen_reg_rtx (Pmode);
temp = legitimize_pic_address (XEXP (XEXP (operands[1], 0), 0),
- SImode, gen_reg_rtx (Pmode));
+ SImode, temp);
operands[1] = expand_binop (SImode, add_optab, temp,
XEXP (XEXP (operands[1], 0), 1),
- gen_reg_rtx (Pmode), 0, OPTAB_LIB_WIDEN);
+ no_new_pseudos ? temp
+ : gen_reg_rtx (Pmode),
+ 0, OPTAB_LIB_WIDEN);
}
}