mirror of git://gcc.gnu.org/git/gcc.git
38 lines
571 B
C
38 lines
571 B
C
/* { 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'" } */
|