From: Geoffrey Keating Date: Wed, 5 Nov 2003 18:21:30 +0000 (+0000) Subject: rs6000.c (rs6000_machopic_legitimize_pic_address): Use an intermediate register for... X-Git-Tag: releases/gcc-3.4.0~2491 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2cf520bf3a4f66defe88168233bb9004d3e90dce;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f40fac01f3d..994e63a1f099 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 f2bc8d5dd627..14de35247a45 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);