/* { dg-do compile { target fpic } } */
/* { dg-options "-O2 -fpic" } */

extern void foo (void *a, double x, double y);
void
bar (void *a, double b, double c, double d, double e, double f, double g, double h, double i, double j, double k[6])
{
  double l, m, n, o, p;
  double q, r, s, t, u;
  double x, y, v, w;
  double z = 0.5 * j;
  double aa;
  l = b - 3 * d;
  m = 4 * f;
  n = f - h;
  q = c + 3 * g - i;
  r = 2 * (e - 2 * g + i);
  s = g - i;
  if (l != 0.0)
    {
      aa = 0.0;
      o = (- m + aa);
      p = (- m - aa);
      if (o > 0.0)
        {
          x = ((b-h)*o + 3*(d+h)*o + 3*(f-h)*o);
          y = ((c-i)*o + 3*(e+i)*o + 3*(g-i)*o);
          foo (a, z, w);
          foo (a, -z, w);
        }
      if (p > 0.0)
        {
          x = ((b+3*f-h)*p + 3*(d-2*f+h)*p + 3*p);
          y = ((c+3*g-i)*p + 3*(e-2*g+i)*p + 3*p);
          v = x * k[0] + y * k[2];
          w = x * k[1] + y * k[3];
          foo (a, z, w);
          foo (a, - z, w);
        }
    }
  if (q != 0.0)
    {
      aa = 0.0;
      t = (- r + aa) / (2 * q);
      u = (- r - aa) / (2 * q);
    }
}
