From 2cf520bf3a4f66defe88168233bb9004d3e90dce Mon Sep 17 00:00:00 2001 From: Geoffrey Keating Date: Wed, 5 Nov 2003 18:21:30 +0000 Subject: [PATCH] rs6000.c (rs6000_machopic_legitimize_pic_address): Use an intermediate register for better optimisation. * config/rs6000/rs6000.c (rs6000_machopic_legitimize_pic_address): Use an intermediate register for better optimisation. From-SVN: r73277 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f40fac01f3..994e63a1f09 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-11-05 Geoffrey Keating + + * config/rs6000/rs6000.c (rs6000_machopic_legitimize_pic_address): Use + an intermediate register for better optimisation. + 2003-11-05 Zdenek Dvorak * cfgloopanal.c (variable_initial_value, variable_initial_values, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index f2bc8d5dd62..14de35247a4 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -14787,9 +14787,13 @@ rs6000_machopic_legitimize_pic_address (rtx orig, enum machine_mode mode, if (GET_CODE (XEXP (orig, 0)) == PLUS) { + /* Use a different reg for the intermediate value, as + it will be marked UNCHANGING. */ + rtx reg_temp = no_new_pseudos ? reg : gen_reg_rtx (Pmode); + base = rs6000_machopic_legitimize_pic_address (XEXP (XEXP (orig, 0), 0), - Pmode, reg); + Pmode, reg_temp); offset = rs6000_machopic_legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode, reg); -- 2.30.2