OSDN Git Service

Fix for -maix64 and medium sized struct passing.
authortrix <trix@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Dec 2001 16:25:12 +0000 (16:25 +0000)
committertrix <trix@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Dec 2001 16:25:12 +0000 (16:25 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48102 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 211386b..e2fcf6c 100644 (file)
@@ -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,
index b2abd81..3bf85d4 100644 (file)
@@ -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.  */