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

            Bug ID: 107208
           Summary: [aarch64] llvm generate better code than gcc base on
                    _Complex type mul
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhongyunde at huawei dot com
  Target Milestone: ---

* gcc now generate 2 redundant mov instrunction compared to llvm
```
mul64(unsigned long _Complex, unsigned long _Complex):
        mov     x4, x1    // redundant ??
        mov     x5, x0    // redundant ??
        mul     x6, x1, x2
        mul     x2, x0, x2
        madd    x1, x5, x3, x6
        msub    x0, x4, x3, x2
        ret
```

* test case, https://godbolt.org/z/EWE3bc5b3
```
unsigned long _Complex mul64 (unsigned long _Complex mul0,
                              unsigned long _Complex mul1)
{
    return mul0 * mul1;
}
```

Reply via email to