|  | /* { dg-do run } */ | 
|  | /* { dg-options "-fsanitize=null -fno-sanitize-recover=null -w" } */ | 
|  | /* { dg-shouldfail "ubsan" } */ | 
|  |  | 
|  | struct S { | 
|  | int i; | 
|  | long long j; | 
|  | long long m; | 
|  | }; | 
|  | union U { | 
|  | int k; | 
|  | struct S l; | 
|  | }; | 
|  |  | 
|  | __attribute__((noinline, noclone)) int | 
|  | foo (struct S s) | 
|  | { | 
|  | return s.i + s.j + s.m; | 
|  | } | 
|  |  | 
|  | __attribute__((noinline, noclone)) int | 
|  | bar (union U *u) | 
|  | { | 
|  | foo (u->l); | 
|  | } | 
|  |  | 
|  | union U v; | 
|  |  | 
|  | int | 
|  | main (void) | 
|  | { | 
|  | union U *u = 0; | 
|  | asm volatile ("" : "+r" (u) : "r" (&v) : "memory"); | 
|  | return bar (u); | 
|  | } | 
|  |  | 
|  | /* { dg-output "member access within null pointer of type 'union U'" } */ |