aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom Rix <trix@redhat.com>2001-12-17 16:25:12 +0000
committerTom Rix <trix@gcc.gnu.org>2001-12-17 16:25:12 +0000
commitea9982a840bcc10454e59f431bfded4e42e5a436 (patch)
tree03b872a1710f2ee1a99c3dd61f58585446eb9746 /gcc
parent301d03af8a3cbf51e79ff35c1aa71a6f353709c5 (diff)
downloadgcc-ea9982a840bcc10454e59f431bfded4e42e5a436.zip
gcc-ea9982a840bcc10454e59f431bfded4e42e5a436.tar.gz
gcc-ea9982a840bcc10454e59f431bfded4e42e5a436.tar.bz2
Fix for -maix64 and medium sized struct passing.
From-SVN: r48102
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c22
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. */