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

            Bug ID: 102672
           Summary: [AArch64] Failure to optimize to using stp instead of
                    2 strs when possible
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gabravier at gmail dot com
  Target Milestone: ---

struct X {
    int i;
    void *p;
};

void foo(struct X *q, void *p)
{
    struct X b{};
    b.p = p;
    *q = b;
}

With -O3, GCC outputs this:

foo(X*, void*):
        str     wzr, [x0]
        str     x1, [x0, 8]
        ret

LLVM instead outputs this:

foo(X*, void*):
        stp     xzr, x1, [x0]
        ret

Reply via email to