http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59799

            Bug ID: 59799
           Summary: aarch64_pass_by_reference never passes arrays by
                    value, contrary to ABI documentation
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: michael.hudson at linaro dot org

It's always possible I'm totally misunderstanding something here, but it seems
that this code:

      /* Arrays always passed by reference.  */
      if (TREE_CODE (type) == ARRAY_TYPE)
    return true;

in gcc/config/aarch64/aarch64.c does not agree with the rules from "Procedure
Call Standard for the ARM 64-bit Architecture"
(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf).
 As far as I can see the rules on page 18 and 19 make no distinction between
arrays and structs and they can both be passed in registers when small enough.

Reply via email to