diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/config/rs6000/rs6000.c | 22 |
2 files changed, 8 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 211386b..e2fcf6c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-12-17 Tom Rix <trix@redhat.com> + + * config/rs6000/rs6000.c (expand_block_move): Fix limits on max size + of bytes. + 2001-12-17 Richard Sandiford <rsandifo@redhat.com> * target.h (asm_out.byte_op, asm_out.aligned_op, asm_out.unaligned_op, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b2abd81..3bf85d4 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -4075,25 +4075,9 @@ expand_block_move (operands) if (bytes <= 0) return 1; - /* Don't support real large moves. If string instructions are not used, - then don't generate more than 8 loads. */ - if (TARGET_STRING) - { - if (bytes > 8*4) - return 0; - } - else if (! STRICT_ALIGNMENT) - { - if (TARGET_POWERPC64 && align >= 4) - { - if (bytes > 8*8) - return 0; - } - else - if (bytes > 8*4) - return 0; - } - else if (bytes > 8*align) + /* store_one_arg depends on expand_block_move to handle at least the size of + reg_parm_stack_space. */ + if (bytes > (TARGET_POWERPC64 ? 64 : 32)) return 0; /* Move the address into scratch registers. */ |
