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)16foo (struct S s) 17 { 18 return s.i + s.j + s.m; 19 } 20 21 __attribute__((noinline, noclone)) int bar(union U * u)22bar (union U *u) 23 { 24 foo (u->l); 25 } 26 27 union U v; 28 29 int main(void)30main (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