From ea9982a840bcc10454e59f431bfded4e42e5a436 Mon Sep 17 00:00:00 2001 From: Tom Rix Date: Mon, 17 Dec 2001 16:25:12 +0000 Subject: [PATCH] Fix for -maix64 and medium sized struct passing. From-SVN: r48102 --- gcc/ChangeLog | 5 +++++ 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 + + * config/rs6000/rs6000.c (expand_block_move): Fix limits on max size + of bytes. + 2001-12-17 Richard Sandiford * 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. */ -- 2.7.4