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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/reload.c | 10 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de15b86..bbdb844 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,16 @@ Sat Nov 3 10:37:56 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + * reload.c (combine_reloads): Don't combine an output reload if there + are other reloads around for part of the output. + + * emit-rtl.c (set_mem_attributes): Set RTX_UNCHANGINGP_P if T is a + constant expression. + (set_mem_decl): New function. + * expr.h (set_mem_decl): New declaration. + * final.c (get_decl_from_op): Don't use ORIGINAL_REGNO if not pseudo. + (output_asm_operand_names): Add tab. + * reload1.c (alter_reg): Set decl of MEM from REG_DECL. + * builtins.c (get_memory_rtx): Properly set MEM alias set and attributes. 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++) |