1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3 
4 struct _wincore
5 {
6   int width, height;
7 };
8 
9 void fn1 (int);
10 void fn2 (int, int, int *);
11 
12 static void
foo(void * dpy,struct _wincore * winInfo,int offset)13 foo (void *dpy, struct _wincore *winInfo, int offset)
14 {
15   fn1 (winInfo->height);
16 }
17 
18 static void
bar(void * dpy,int winInfo,int * visrgn)19 bar (void *dpy, int winInfo, int *visrgn)
20 {
21   ((void (*) (void *, int, int)) foo) ((void *) 0, winInfo, 0);  /* { dg-warning "function called through a non-compatible type" } */
22   fn2 (0, 0, visrgn);
23 }
24 
25 void
baz(void * dpy,int win,int prop)26 baz (void *dpy, int win, int prop)
27 {
28   bar ((void *) 0, 0, (int *) 0);
29 }
30