// { dg-do assemble } class base { protected: virtual void f(); }; class d1 : public virtual base { protected: void f(); }; void d1::f() { base::f(); } class dd1 : public virtual d1 { protected: void f(); }; void dd1::f() { d1::f(); base::f(); } class d1_and_base : public virtual d1, public virtual base { protected: void f(); }; void d1_and_base::f() { d1::f(); base::f(); }