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

--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #17)
> /* { dg-do run } */
> 
> double a[4], b[2];
> 
> void __attribute__((noipa))
> foo ()
> {
>   double a0 = a[0];
>   double a1 = a[1];
>   double a2 = a[2];
>   double a3 = a[3];
>   b[0] = a1 - a3;
>   b[1] = a0 + a2;
> }
> 
> int main()
> {
>   a[0] = 1.;
>   a[1] = 2.;
>   a[2] = 3.;
>   a[3] = 4.;
>   foo ();
>   if (b[0] != -2 || b[1] != 4)
>     __builtin_abort ();
>   return 0;
> }

err

/* { dg-do run } */

double a[2], b[2], c[2], d[2];

void __attribute__((noipa))
foo()
{
  double a0 = a[0];
  double a1 = a[1];
  double b0 = b[0];
  double b1 = b[1];
  double c0 = c[0];
  double c1 = c[1];
  double tem1 = a1 - b1;
  double tem2 = a0 + b0;
  d[0] = tem1 * c1;
  d[1] = tem2 * c0;
}

int main()
{
  a[0] = 1.;
  a[1] = 2.;
  b[0] = 3.;
  b[1] = 4.;
  c[0] = 2.;
  c[1] = 3.;
  foo ();
  if (d[0] != -6. || d[1] != 8.)
    __builtin_abort ();
  return 0;
}

Reply via email to