// { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* alpha*-*-* ia64-*-* sparc*-*-* } } #include extern "C" void abort (); struct A { virtual void f (int, ...) {} int i; }; struct B : virtual public A { }; struct C : public B { C (); virtual void f (int, ...); }; extern C* cp; C::C () { cp = this; } void C::f (int i, ...) { if (this != cp) abort (); va_list ap; if (i != 3) abort (); va_start (ap, i); if (va_arg (ap, int) != 7) abort (); va_end (ap); } C* cp = new C; int main () { cp->f (3, 7); }