https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104405
Andrew Pinski changed:
What|Removed |Added
Last reconfirmed||2022-02-06
Keywords||ra
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #2 from Andrew Pinski ---
This has nothing to do with expansion of IMAGPART_EXPR here but rather the
reuturn side.
Note the x86 issue is different from the aarch64 issue
Here is a testcase which shows it is just return side related:
_Complex double
f1 ( double ar, double ai, double br, double bi, double *t)
{
double _14, _16, _17, _3;
_14 = ai * bi;
_16 = ai * br;
_17 = -(ar*br)+_14;
_3 = (-(ar*bi)-_16);
return __builtin_complex(_3, _17);
}
Also adding -fno-schedule-insns for the above testcase removes all of the extra
move instructions.
The big question becomes now is really an issue in real world code or just a
toy benchmark which is testing argument/return passing optimizations?