/* PR rtl-optimization/79780 */

int t3, iy, f4, oi, gn;

void
foo (long long int mh)
{
  int pi = 0;

  if (iy != 0)
    for (;;)
      f4 = 0;

  if (t3 != 0)
    {
      while (mh != 0LL)
	{
	  while (mh < 1LL)
	    ++mh;
	  ++mh;
	}
      for (;;)
	;
      for (oi = 0; oi < 1; ++oi)
	{
	n3:;
	}
      gn = iy = 1;
    }

  f4 = 0;

  if (pi - (mh != 0LL) == 0)
    if (mh != 1LL)
      {
	oi = t3 = 0;
	if (mh == 0LL)
	  ++pi;
      }

  if (iy != 0 && pi != 0)
    {
      t3 = 0;
      goto n3;
    }

  t3 /= 0;
}
