http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54409
Markus Trippelsdorf <markus at trippelsdorf dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |markus at trippelsdorf dot | |de --- Comment #4 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2012-08-29 16:05:50 UTC --- Somewhat reduced: struct list_head { struct list_head *prev; }; struct sockaddr_in6 { int sin6_addr; } ; struct __kernel_sockaddr_storage { } ; struct TCP_Server_Info { struct list_head tcp_ses_list; struct __kernel_sockaddr_storage srcaddr; }; int b; _Bool fn1 (int *p1) { long *a = (long *) p1; return a[1]; } static _Bool fn2 (int *p1) { switch (b) case 0: { struct sockaddr_in6 *c = (struct sockaddr_in6 *) &p1; return fn1 (&c->sin6_addr); } } _Bool fn3 (struct TCP_Server_Info * p1) { if (fn2 ((int *) &p1->srcaddr)) return 0; }