/* { dg-do compile } */
/* { dg-skip-if "" { powerpc*-*-aix* } } */
/* { dg-options "-w -O2 -mpowerpc64" } */

/*
 * (below is minimized test case)
 */

extern double pow(double x, double y);
extern long func ();
short global0, global1;
static int i0, i1, i2, i3, i4, i5;
double dbl, *array0, *array1;

void
pr64505 (short *arg0, double *arg1)
{
  int error = 0;
  short num = func (&global1 + 15, &error);
  for (int j = 0; j < array0[0]; j++)
    {
      if (j == 0)
	{
	  func (arg0, &global1 + 20, &error);
	  array0[0] = num;
	}
      else
	{
	  double cr = (&dbl)[1];
	  if (func (&i4))
	    func (0, &(&array0)[j]);
	  if (func (&i5))
	    {
	      if ((&global1)[12])
		cr = array1[j];
	    }
	  if (func (&i2)
	      && (&global1)[12])
	    {
	      if (func (&i1))
	        pow ((&dbl)[1], 2);
	    }
	    array0[j] = cr;
	}
      if (func (&i0) && global0)
        func (((short *) array0 + 1)[j]);
    }
  short ad = func (&global1 + 15, 0);
  if (func (&i3) && func ())
    *arg1 = *((double *) &global1) * ad;
  func (&global1 + 15);
}
