void bar (B *b, V *v, F *f) { foo_s (b); /* { dg-error "incompatible" } */ foo_u (v); /* { dg-error "incompatible" } */ foo_e (f); /* { dg-error "incompatible" } */ foo_sp ((struct B *) b); /* { dg-error "passing argument" } */ foo_up ((union V *) v); /* { dg-error "passing argument" } */ foo_ep (__extension__ (enum F *) f); /* { dg-error "passing argument" } */ }
int main() { Parent p; foo_p(&p); Child c; foo_c(&c); foo_p(&c); SuperChild s; foo_s(&s); foo_c(&s); foo_p(&s); p.x; p.y; p.f0(); c.z; c.x; c.y; c.f0(); c.f1(); c.f2(); c.f3(); s.z2; s.z; s.x; s.y; s.f0(); s.f1(); s.f2(); s.f3(); s.f4(); s.f5(); s.f6(); return 0; }