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

Reply via email to