middle-end: copy STMT_VINFO_STRIDED_P when DR is replaced [PR116956]
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr51071-2.c
blob638b4b8539a1ec4934ea96ef001e79a4bef7bfff
1 /* { dg-do compile } */
2 /* { dg-options "-fno-delete-null-pointer-checks" } */
3 /* { dg-require-effective-target label_values } */
5 __extension__ typedef __UINTPTR_TYPE__ uintptr_t;
7 extern struct module __this_module;
8 static inline void
9 trace_module_get (struct module *mod, uintptr_t ip) { }
10 struct module;
11 int module_is_live (struct module *);
12 static inline __attribute__((no_instrument_function))
13 int try_module_get(struct module *module)
15 int ret = 1;
16 if (module)
18 if (module_is_live(module))
20 __label__ __here;
21 asm("");
22 __here:
23 trace_module_get(module, (uintptr_t)&&__here);
25 else
26 ret = 0;
28 return ret;
30 struct net_device;
31 struct net_device_ops {
32 int (*ndo_open)(struct net_device *dev);
34 int hdlc_open (struct net_device *);
35 int t3e3_open(struct net_device *dev)
37 int ret = hdlc_open(dev);
38 if (ret)
39 return ret;
40 try_module_get((&__this_module));
41 return 0;
43 const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open };