diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-06-05 21:49:58 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-06-05 21:49:58 -0400 |
commit | 1cab3be12477caa172c6e33cb417030af5d425c8 (patch) | |
tree | 8786de1dbfae7c6ee29a81027c9d9be856c05282 /gcc | |
parent | 025cc92388565c9366f5312bd517234f9ff2a688 (diff) | |
download | gcc-1cab3be12477caa172c6e33cb417030af5d425c8.zip gcc-1cab3be12477caa172c6e33cb417030af5d425c8.tar.gz gcc-1cab3be12477caa172c6e33cb417030af5d425c8.tar.bz2 |
(expand_block_move): Don't do any block moves where we clobber fixed numbers of registers...
(expand_block_move): Don't do any block moves where we clobber fixed
numbers of registers, instead move just 1-8 bytes at a time.
From-SVN: r9884
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5ae1507..2adff2a 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -687,7 +687,7 @@ expand_block_move (operands) then don't generate more than 8 loads. */ if (TARGET_STRING) { - if (bytes > 64) + if (bytes > 4*8) return 0; } else if (!STRICT_ALIGNMENT) @@ -706,6 +706,8 @@ expand_block_move (operands) { for ( ; bytes > 0; bytes -= move_bytes) { +#if 0 + /* XXX Don't move so many bytes right now, it causes the compiler to not bootstrap */ if (bytes > 24 /* move up to 32 bytes at a time */ && !fixed_regs[5] && !fixed_regs[6] @@ -748,7 +750,9 @@ expand_block_move (operands) GEN_INT (move_bytes), align_rtx)); } - else if (bytes > 4 && !TARGET_64BIT) + else +#endif + if (bytes > 4 && !TARGET_64BIT) { /* move up to 8 bytes at a time */ move_bytes = (bytes > 8) ? 8 : bytes; emit_insn (gen_movstrsi_2reg (dest_reg, |