/* PR debug/49522 */
/* { dg-do compile } */
/* { dg-options "-fcompare-debug" } */

int val1 = 0L;
volatile int val2 = 7L;
long long val3;
int *ptr = &val1;

int foo (void);

static int
func1 ()
{
  return 0;
}

static short int
func2 (short int a, unsigned int b)
{
  return !b ? a : a >> b;
}

static unsigned long long
func3 (unsigned long long a, unsigned long long b)
{
  return !b ? a : a % b;
}

void
func4 (unsigned short arg1, int arg2)
{
  for (arg2 = 0; arg2 < 2; arg2++)
    {
      *ptr = func3 (func3 (10, func2 (val3, val2)), val3);
      for (arg1 = -14; arg1 > 14; arg1 = func1 ())
	{
	  *ptr = -1;
	  if (foo ())
	    ;
	}
    }
}
