On 6 February 2014 22:51, Michael Hudson-Doyle
<[email protected]> 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