OSDN Git Service

Backported from mainline
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / anon-struct-13.c
1 /* { dg-do compile } */
2 /* { dg-options "-fplan9-extensions" } */
3
4 /* Test for ambiguity when using the Plan 9 extensions.  */
5
6 struct A {
7   char a;               /* { dg-error "duplicate member" } */
8 };
9
10 struct B
11 {
12   struct A;
13   struct A;
14 };
15
16 char
17 f1 (struct B *p)
18 {
19   return p->a;          /* { dg-error "no member" } */
20 }
21
22 void
23 f2 (struct A *p)        /* { dg-message "expected" } */
24 {
25 }
26
27 void
28 f3 (struct B *p)
29 {
30   f2 (p);               /* { dg-warning "incompatible pointer type" } */
31 }
32
33 struct C
34 {
35   char c;               /* { dg-error "duplicate member" } */
36 };
37
38 struct D
39 {
40   struct C;
41 };
42
43 struct E
44 {
45   struct C;
46   struct D;
47 };
48
49 char
50 f4 (struct E *p)
51 {
52   return p->c;          /* { dg-error "no member" } */
53 }
54
55 void
56 f6 (struct C *p)        /* { dg-message "expected" } */
57 {
58 }
59
60 void
61 f7 (struct E *p)
62 {
63   f6 (p);               /* { dg-warning "incompatible pointer type" } */
64 }
65
66 struct A
67 f8 (struct B *p)
68 {
69   return p->A;          /* { dg-error "no member" } */
70 }
71
72 struct C
73 f9 (struct E *p)
74 {
75   return p->C;          /* { dg-error "no member" } */
76 }