1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-ipa-icf-details" } */
6 struct __hlist_node
*first
;
11 struct __hlist_node
*next
, **pprev
;
17 struct __hlist_head
* dev_index_head
;
24 struct __hlist_node index_hlist
;
27 __attribute__ ((noinline
, noclone
))
28 static struct __hlist_head
* __dev_index_hash(struct __net
*net
,
31 return &net
->dev_index_head
[ifindex
& 1];
34 __attribute__ ((noinline
, noclone
))
35 struct __net_device
* __dev_get_by_index(struct __net
*net
, int ifindex
)
37 struct __net_device
* dev
;
38 struct __hlist_head
* head
= __dev_index_hash(net
, ifindex
);
40 for (dev
= ( { typeof((head
)->first
) ____ptr
= ((head
)->first
); ____ptr
? ( { const typeof(((typeof(*(dev
)) *) 0)->index_hlist
) * __mptr
= (____ptr
); (typeof(*(dev
)) *) ((char *)__mptr
- __builtin_offsetof(typeof(*(dev
)), index_hlist
));}): ((void *) 0);});
41 dev
; dev
= ( { typeof ((dev
)->index_hlist
.next
) ____ptr
= ((dev
)->index_hlist
.next
); ____ptr
? ( { const typeof(((typeof(*(dev
)) *) 0)->index_hlist
) * __mptr
= (____ptr
); (typeof(*(dev
)) *) ((char *)__mptr
- __builtin_offsetof(typeof(*(dev
)), index_hlist
));}): ((void *) 0);}))
42 if (dev
->ifindex
== ifindex
)
48 __attribute__ ((noinline
, noclone
))
49 struct __net_device
* dev_get_by_index_rcu(struct __net
*net
, int ifindex
)
51 struct __net_device
* dev
;
52 struct __hlist_head
* head
= __dev_index_hash(net
, ifindex
);
54 for (dev
= ( { typeof(( { typeof (* ((*((struct __hlist_node
**)(&(head
)->first
))))) * _________p1
= (typeof(*((*((struct __hlist_node
**)(&(head
)->first
))))) *) (*(volatile typeof(((*((struct __hlist_node
**)(&(head
)->first
))))) *)&(((*((struct __hlist_node
**)(&(head
)->first
)))))); do { } while (0);; do { } while (0); ((typeof(*((*((struct __hlist_node
**)(&(head
)->first
))))) *) (_________p1
));})) ____ptr
= (( { typeof (* ((*((struct __hlist_node
**)(&(head
)->first
))))) * _________p1
= (typeof(*((*((struct __hlist_node
**)(&(head
)->first
))))) *) (*(volatile typeof(((*((struct __hlist_node
**)(&(head
)->first
))))) *)&(((*((struct __hlist_node
**)(&(head
)->first
)))))); do { } while (0);; do { } while (0); ((typeof(*((*((struct __hlist_node
**)(&(head
)->first
))))) *) (_________p1
));})); ____ptr
? ( { const typeof(((typeof(*(dev
)) *) 0)->index_hlist
) * __mptr
= (____ptr
); (typeof(*(dev
)) *) ((char *)__mptr
- __builtin_offsetof(typeof(*(dev
)), index_hlist
));}):((void *) 0);});
55 dev
; dev
= ( { typeof(( { typeof (* ((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) * _________p1
= (typeof(*((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) *) (*(volatile typeof(((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) *)&(((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
)))))); do { } while (0);; do { } while (0); ((typeof(*((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) *) (_________p1
));})) ____ptr
= (( { typeof (* ((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) * _________p1
= (typeof(*((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) *) (*(volatile typeof(((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) *)&(((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
)))))); do { } while (0);; do { } while (0); ((typeof(*((*((struct __hlist_node
**)(&(&(dev
)->index_hlist
)->next
))))) *) (_________p1
));})); ____ptr
? ( { const typeof(((typeof(*(dev
)) *) 0)->index_hlist
) * __mptr
= (____ptr
); (typeof(*(dev
)) *) ((char *)__mptr
- __builtin_offsetof(typeof(*(dev
)), index_hlist
));}): ((void *) 0);}))
56 if (dev
->ifindex
== ifindex
)
61 __attribute__ ((noinline
, noclone
))
62 int foo(struct __net
*net
)
64 if (!__dev_get_by_index(net
, net
->ifindex
));
74 /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf" } } */