// { dg-do run  }
// GROUPS passed redeclaration
// Check that if multiple declarations of the same single
// function are present in different places in the same file,
// and if these declarations differ (as allowed) in the number
// of argument defaults provided, that correct values are
// passed at all call points anyway.

extern "C" int printf (const char *, ...); 

void receiver (int ii, int jj);

void sender_1 ()
{
	receiver (3,7);
}

void receiver (int ii, int jj = 9);

void sender_2 ()
{
	receiver (5);
}

int ii_sum = 0;
int jj_sum = 0;

void sender_3 ();

int main ()
{
	sender_1 ();
	sender_2 ();
	sender_3 ();
	if (ii_sum != 13 || jj_sum != 25)
	  { printf ("FAIL\n"); return 1; }
	else
	  printf ("PASS\n");

	return 0;
}

void receiver (int ii, int jj)
{
	ii_sum += ii;
	jj_sum += jj;
}

void sender_3 ()
{
	receiver (5);
}
