| /* { dg-do compile } */ |
| /* { dg-options "-fno-delete-null-pointer-checks" } */ |
| /* { dg-require-effective-target label_values } */ |
| |
| __extension__ typedef __UINTPTR_TYPE__ uintptr_t; |
| |
| extern struct module __this_module; |
| static inline void |
| trace_module_get (struct module *mod, uintptr_t ip) { } |
| struct module; |
| int module_is_live (struct module *); |
| static inline __attribute__((no_instrument_function)) |
| int try_module_get(struct module *module) |
| { |
| int ret = 1; |
| if (module) |
| { |
| if (module_is_live(module)) |
| { |
| __label__ __here; |
| asm(""); |
| __here: |
| trace_module_get(module, (uintptr_t)&&__here); |
| } |
| else |
| ret = 0; |
| } |
| return ret; |
| } |
| struct net_device; |
| struct net_device_ops { |
| int (*ndo_open)(struct net_device *dev); |
| }; |
| int hdlc_open (struct net_device *); |
| int t3e3_open(struct net_device *dev) |
| { |
| int ret = hdlc_open(dev); |
| if (ret) |
| return ret; |
| try_module_get((&__this_module)); |
| return 0; |
| } |
| const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open }; |