// GROUPS passed overloading
// Check that calls to the correct overloaded virtual
// functions are generated even where the type of the formal
// arguments for the overloadings are similar or related.

extern "C" void printf (char *, ...); 

int proper_method_called = 0;

struct base {
	int member;
	virtual void method (char)
	{
	}
	virtual void method (char *)
	{
	}
};

struct derived : public base {
	int member;
	virtual void method (char)
	{
	}
	virtual void method (char *)
	{
		proper_method_called++;
	}
};

char *message;

int main ()
{
	derived derived_object;

	derived_object.method (message);

	if (proper_method_called != 1)
	  printf ("FAIL\n");
	else
	  printf ("PASS\n");
}
