/* { 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'" } */