On 6 February 2014 22:51, Michael Hudson-Doyle <michael.hud...@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. Cheers /Marcus