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