// { dg-do run  }
// { dg-options "-w" }
// GROUPS passed ARM-compliance
// arm file (also in cvt file)
// Message-Id: <9303061246.AA09402@gjetost.cs.wisc.edu>
// From: solomon@cs.wisc.edu (Marvin Solomon)
// Subject: Incorrect resolution of conversion path
// Date: Sat, 6 Mar 93 06:46:27 -0600


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

class Base {
public:
	int i;
	Base(int ii) : i(ii) {}
};

class Derived : public Base {
public:
	Derived(int ii) : Base(ii) {}
	operator Base&();
};

Derived::operator Base&() {
	Base *b = new Base(100*i);
	return *b;
}

int f(Base &b) {
	if (b.i == 99)
	  { printf ("PASS\n"); return 0; }
	else
	  { printf ("FAIL\n"); return 1; }
}

int main() {
	Derived d(99);
	return f(d);
}

