aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-06-05 21:49:58 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-06-05 21:49:58 -0400
commit1cab3be12477caa172c6e33cb417030af5d425c8 (patch)
tree8786de1dbfae7c6ee29a81027c9d9be856c05282
parent025cc92388565c9366f5312bd517234f9ff2a688 (diff)
downloadgcc-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
-rw-r--r--gcc/config/rs6000/rs6000.c8
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,