1 /* { dg-do compile } */
3 /* Also turn off the default -pedantic-errors option. */
4 /* { dg-options "-fpermissive" } */
6 /* When not using -fplan9-extensions, we don't support automatic
7 conversion of pointer types, and we don't support referring to a
8 typedef name directly. */
10 extern void exit (int);
11 extern void abort (void);
17 struct A
; /* { dg-warning "does not declare anything" } */
22 f1 (struct A
*p
) /* { dg-message "expected" } */
35 f1 (&b
); /* { dg-warning "incompatible pointer type" } */
36 if (b
.a
!= 1) /* { dg-error "no member" } */
38 if (b
.b
!= 2 || b
.c
!= 3)
40 p
= &b
; /* { dg-warning "incompatible pointer type" } */
45 typedef struct { char d
; } D
;
49 struct F
{ char f
; }; /* { dg-warning "does not declare anything" } */
52 D
; /* { dg-warning "does not declare anything" } */
58 f2 (struct F
*p
) /* { dg-message "expected" } */
64 f3 (D
*p
) /* { dg-message "expected" } */
85 f2 (&e
); /* { dg-warning "incompatible pointer type" } */
86 f3 (&e
); /* { dg-warning "incompatible pointer type" } */
87 if (e
.d
!= 4) /* { dg-error "no member" } */
89 if (e
.f
!= 6) /* { dg-error "no member" } */
91 if (e
.b
!= 2 || e
.c
!= 3 || e
.e
!= 5)
93 pf
= &e
; /* { dg-warning "incompatible pointer type" } */
96 pd
= &e
; /* { dg-warning "incompatible pointer type" } */
99 d
= e
.D
; /* { dg-error "no member" } */
100 f3 (&e
.D
); /* { dg-error "no member" } */
101 f4 (e
.D
); /* { dg-error "no member" } */