Allow passing arrays in registers on AArch64

Jakub Jelinek jakub@redhat.com
Tue Feb 11 14:53:00 GMT 2014


On Tue, Feb 11, 2014 at 02:51:08PM +0000, Marcus Shawcroft wrote:
> On 6 February 2014 22:51, Michael Hudson-Doyle
> <michael.hudson@canonical.com> wrote:
> 
> > diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> > index 16c51a8..958c667 100644
> > --- a/gcc/config/aarch64/aarch64.c
> > +++ b/gcc/config/aarch64/aarch64.c
> > @@ -1187,14 +1187,10 @@ aarch64_pass_by_reference (cumulative_args_t pcum ATTRIBUTE_UNUSED,
> >    size = (mode == BLKmode && type)
> >      ? int_size_in_bytes (type) : (int) GET_MODE_SIZE (mode);
> >
> > -  if (type)
> > +  /* Aggregates are passed by reference based on their size.  */
> > +  if (type && AGGREGATE_TYPE_P (type))
> >      {
> > -      /* Arrays always passed by reference.  */
> > -      if (TREE_CODE (type) == ARRAY_TYPE)
> > -       return true;
> > -      /* Other aggregates based on their size.  */
> > -      if (AGGREGATE_TYPE_P (type))
> > -       size = int_size_in_bytes (type);
> > +      size = int_size_in_bytes (type);
> >      }
> >
> >    /* Variable sized arguments are always returned by reference.  */
> 
> This version of the patch looks fine.  Since this is a bug I think it
> should be committed now in stage 4.    This is OK if release manager
> agrees.

Ok.

	Jakub



More information about the Gcc-patches mailing list