// { dg-do run  }
// { dg-options "-w" }
// GROUPS passed references
// Check that if a reference is initialized to refer to a value
// which is returned from a function call, the actual call to
// the function is only invoked for the original initialization
// of the reference, and not for each subsequent use of the
// reference.
//
// This test fails with G++ 1.35.0- (pre-release).
// Reported 4/4/89 by Kim Smith

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

struct base {
	mutable int data_member;

	base () {}
	void function_member () const;
};

base base_object;

base base_returning_function ();

int call_count = 0;

int main ()
{
	const base& base_ref = base_returning_function ();

	base_ref.function_member ();
	base_ref.function_member ();
	base_ref.data_member  = 99;

	if (call_count == 1)
	  printf ("PASS\n");
	else
	  { printf ("FAIL\n"); return 1; }

	return 0;
}

base base_returning_function ()
{
	base local_base_object;

	call_count++;
	return local_base_object;
}

void base::function_member () const
{
}
