https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91710

            Bug ID: 91710
           Summary: unexpected ABI change note
           Product: gcc
           Version: 9.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jbeulich at suse dot com
  Target Milestone: ---

Presumably as a result of the fix for bug 88469 on aarch64 there's now a
diagnostic apparently on any passing by value of a compound type using a
bitfield:

struct s {
        unsigned int i:4;
};

unsigned int test1(struct s s) {
        return s.i;
}

unsigned int test2(unsigned x, struct s s) {
        return x - s.i;
}

unsigned int test3(unsigned x, unsigned y, struct s s) {
        return x - y - s.i;
}

triggers three note diagnostics. Comparing the generated code there is (as
expected) no change at all from 8.x (same also when looking at the caller side
code).

I wonder whether this isn't simply because aarch64_function_arg_boundary()
guards its inform() invocation only by a condition not depending on the
function inputs.

For reference, the issue was originally noticed with p2m_mem_access_check() in
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/arm/mem_access.c;h=3e3620294cbcee685f13c25a03f343f7d4422847;hb=refs/heads/staging
with struct npfec being declared in
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/include/xen/mm.h;h=8d0ddfb60cf4cd08bf907c1f0155049661e3370d;hb=refs/heads/staging

Reply via email to