// { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* alpha*-*-* ia64-*-* sparc*-*-* } } | |
#include <stdarg.h> | |
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); | |
} |