diff options
author | Geoffrey Keating <geoffk@apple.com> | 2003-11-05 18:21:30 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2003-11-05 18:21:30 +0000 |
commit | 2cf520bf3a4f66defe88168233bb9004d3e90dce (patch) | |
tree | 15b8e862a5d6eb99853bf5820b476008ef1f63a6 | |
parent | a6cf80f29cd5353bc4e22fee9b87abec03b5e6b2 (diff) | |
download | gcc-2cf520bf3a4f66defe88168233bb9004d3e90dce.zip gcc-2cf520bf3a4f66defe88168233bb9004d3e90dce.tar.gz gcc-2cf520bf3a4f66defe88168233bb9004d3e90dce.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f40fac..994e63a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-11-05 Geoffrey Keating <geoffk@apple.com> + + * config/rs6000/rs6000.c (rs6000_machopic_legitimize_pic_address): Use + an intermediate register for better optimisation. + 2003-11-05 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> * cfgloopanal.c (variable_initial_value, variable_initial_values, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index f2bc8d5..14de352 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); |