diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2001-11-03 15:56:17 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2001-11-03 10:56:17 -0500 |
commit | 6b3736a12b14c2d2dddafeea0941aaaf413af393 (patch) | |
tree | 8f97ad08360a62515f315d4af00d268994015a1e /gcc/reload.c | |
parent | 1285011e67bc94e8ed28b9711ace7445d4588254 (diff) | |
download | gcc-6b3736a12b14c2d2dddafeea0941aaaf413af393.zip gcc-6b3736a12b14c2d2dddafeea0941aaaf413af393.tar.gz gcc-6b3736a12b14c2d2dddafeea0941aaaf413af393.tar.bz2 |
reload.c (combine_reloads): Don't combine an output reload if there are other reloads around for part of...
* reload.c (combine_reloads): Don't combine an output reload if there
are other reloads around for part of the output.
From-SVN: r46734
Diffstat (limited to 'gcc/reload.c')
-rw-r--r-- | gcc/reload.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 9ed9cd0..ad884ae 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1641,6 +1641,16 @@ combine_reloads () if (earlyclobber_operand_p (rld[output_reload].out)) return; + /* If there is a reload for part of the address of this operand, we would + need to chnage it to RELOAD_FOR_OTHER_ADDRESS. But that would extend + its life to the point where doing this combine would not lower the + number of spill registers needed. */ + for (i = 0; i < n_reloads; i++) + if ((rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS + || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS) + && rld[i].opnum == rld[output_reload].opnum) + return; + /* Check each input reload; can we combine it? */ for (i = 0; i < n_reloads; i++) |