/* { dg-do compile } */ /* { dg-options "-fplan9-extensions" } */ /* Test for ambiguity when using the Plan 9 extensions. */ struct A { char a; /* { dg-error "duplicate member" } */ }; struct B { struct A; struct A; }; char f1 (struct B *p) { return p->a; /* { dg-error "no member" } */ } void f2 (struct A *p) /* { dg-message "expected" } */ { } void f3 (struct B *p) { f2 (p); /* { dg-warning "incompatible pointer type" } */ } struct C { char c; /* { dg-error "duplicate member" } */ }; struct D { struct C; }; struct E { struct C; struct D; }; char f4 (struct E *p) { return p->c; /* { dg-error "no member" } */ } void f6 (struct C *p) /* { dg-message "expected" } */ { } void f7 (struct E *p) { f6 (p); /* { dg-warning "incompatible pointer type" } */ } struct A f8 (struct B *p) { return p->A; /* { dg-error "no member" } */ } struct C f9 (struct E *p) { return p->C; /* { dg-error "no member" } */ }