/* { dg-do run } */ /* { dg-options "-O" } */ struct in_addr { unsigned int s_addr; }; struct ip { unsigned char ip_p; unsigned short ip_sum; struct in_addr ip_src,ip_dst; } __attribute__ ((aligned(1), packed)); struct ip ip_fw_fwd_addr; int test_alignment( char *m ) { struct ip *ip = (struct ip *) m; struct in_addr pkt_dst; pkt_dst = ip->ip_dst ; if( pkt_dst.s_addr == 0 ) return 1; else return 0; } int __attribute__ ((noinline, noclone)) intermediary (char *p) { return test_alignment (p); } int main (int argc, char *argv[]) { ip_fw_fwd_addr.ip_dst.s_addr = 1; return intermediary ((void *) &ip_fw_fwd_addr); }