1 /* { dg-do run } */
2 /* { dg-options "-fsanitize=null -fno-sanitize-recover=null -w" } */
3 /* { dg-shouldfail "ubsan" } */
4 
5 struct S {
6   int i;
7   long long j;
8   long long m;
9 };
10 union U {
11   int k;
12   struct S l;
13 };
14 
15 __attribute__((noinline, noclone)) int
foo(struct S s)16 foo (struct S s)
17 {
18   return s.i + s.j + s.m;
19 }
20 
21 __attribute__((noinline, noclone)) int
bar(union U * u)22 bar (union U *u)
23 {
24   foo (u->l);
25 }
26 
27 union U v;
28 
29 int
main(void)30 main (void)
31 {
32   union U *u = 0;
33   asm volatile ("" : "+r" (u) : "r" (&v) : "memory");
34   return bar (u);
35 }
36 
37 /* { dg-output "member access within null pointer of type 'union U'" } */
38