Commit 1cab3be1 by Richard Kenner

(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
parent 025cc923
...@@ -687,7 +687,7 @@ expand_block_move (operands) ...@@ -687,7 +687,7 @@ expand_block_move (operands)
then don't generate more than 8 loads. */ then don't generate more than 8 loads. */
if (TARGET_STRING) if (TARGET_STRING)
{ {
if (bytes > 64) if (bytes > 4*8)
return 0; return 0;
} }
else if (!STRICT_ALIGNMENT) else if (!STRICT_ALIGNMENT)
...@@ -706,6 +706,8 @@ expand_block_move (operands) ...@@ -706,6 +706,8 @@ expand_block_move (operands)
{ {
for ( ; bytes > 0; bytes -= move_bytes) 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 */ if (bytes > 24 /* move up to 32 bytes at a time */
&& !fixed_regs[5] && !fixed_regs[5]
&& !fixed_regs[6] && !fixed_regs[6]
...@@ -748,7 +750,9 @@ expand_block_move (operands) ...@@ -748,7 +750,9 @@ expand_block_move (operands)
GEN_INT (move_bytes), GEN_INT (move_bytes),
align_rtx)); align_rtx));
} }
else if (bytes > 4 && !TARGET_64BIT) else
#endif
if (bytes > 4 && !TARGET_64BIT)
{ /* move up to 8 bytes at a time */ { /* move up to 8 bytes at a time */
move_bytes = (bytes > 8) ? 8 : bytes; move_bytes = (bytes > 8) ? 8 : bytes;
emit_insn (gen_movstrsi_2reg (dest_reg, emit_insn (gen_movstrsi_2reg (dest_reg,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment