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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[11/12/13/14 Regression]    |[11/12/13/14 Regression]
                   |Extra move in complex       |Extra move in double
                   |double argument and         |argument and multiplication
                   |multiplication              |and return

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Here is another testcase without complex (or even needing -ffast-math) being
involved:
```
struct cmplx
{
  double r;
  double i;
};

struct cmplx
f(double ar, double ai, double br, double bi, __complex double *r)
{
  double t = ai * bi;
  double t1 = ai * br;
  double t2 = ar * bi + t1;
  double t3 = ar * br - t;
  return (struct cmplx){t3,t2};
}
```

This only shows up wih both arguments and returns and using the same registers.
I am 99% sure this does not show up that much really either.

Reply via email to