blob: 646c460bdbb69d2553b56663d6770f35ddc0e475 [file] [log] [blame]
/* PR middle-end/80936 - bcmp, bcopy, and bzero not declared nonnull
Verify that -Wnonnull is issued for calls with constant null pointers
with no optimization.
{ dg-do compile }
{ dg-options "-O0 -Wall" } */
void
zero0 (void *p, unsigned n)
{
__builtin_memset (0, 0, 0);
__builtin_memset (0, 0, n);
__builtin_memset (0, 0, 1); // { dg-warning "\\\[-Wnonnull]" }
}
void
zero1 (void *p, unsigned n)
{
__builtin_bzero (0, 0);
__builtin_bzero (0, n);
__builtin_bzero (0, 2); // { dg-warning "\\\[-Wnonnull]" }
}
void
copy0 (void *p, const void *q, unsigned n)
{
__builtin_memcpy (0, q, 0);
__builtin_memcpy (0, q, n);
__builtin_memcpy (0, q, 3); // { dg-warning "\\\[-Wnonnull]" }
}
void
copy1 (void *p, const void *q, unsigned n)
{
__builtin_memcpy (p, 0, 0);
__builtin_memcpy (p, 0, n);
__builtin_memcpy (p, 0, 4); // { dg-warning "\\\[-Wnonnull]" }
}
void
copy2 (void *p, const void *q, unsigned n)
{
__builtin_bcopy (0, p, 0);
__builtin_bcopy (0, p, n);
__builtin_bcopy (0, p, 5); // { dg-warning "\\\[-Wnonnull]" }
}
void
copy3 (void *p, const void *q, unsigned n)
{
__builtin_bcopy (q, 0, 0);
__builtin_bcopy (q, 0, n);
__builtin_bcopy (q, 0, 6); // { dg-warning "\\\[-Wnonnull]" }
}
int
cmp0 (const void *p, const void *q, unsigned n)
{
return __builtin_memcmp (0, q, 0);
}
int
cmp1 (const void *p, const void *q, unsigned n)
{
return __builtin_memcmp (0, q, 0);
}
int
cmp2 (const void *p, const void *q, unsigned n)
{
return __builtin_bcmp (0, q, 0);
}
int
cmp3 (const void *p, const void *q, unsigned n)
{
return __builtin_bcmp (p, 0, 0);
}
int
cmp4 (const void *p, const void *q, unsigned n)
{
return __builtin_memcmp (0, q, n);
}
int
cmp5 (const void *p, const void *q, unsigned n)
{
return __builtin_memcmp (0, q, n);
}
int
cmp6 (const void *p, const void *q, unsigned n)
{
return __builtin_bcmp (0, q, n);
}
int
cmp7 (const void *p, const void *q, unsigned n)
{
return __builtin_bcmp (p, 0, n);
}
int
cmp8 (const void *p, const void *q, unsigned n)
{
return __builtin_memcmp (0, q, 41); // { dg-warning "\\\[-Wnonnull]" }
}
int
cmp9 (const void *p, const void *q, unsigned n)
{
return __builtin_memcmp (0, q, 42); // { dg-warning "\\\[-Wnonnull]" }
}
int
cmp10 (const void *p, const void *q, unsigned n)
{
return __builtin_bcmp (0, q, 43); // { dg-warning "\\\[-Wnonnull]" }
}
int
cmp11 (const void *p, const void *q, unsigned n)
{
return __builtin_bcmp (p, 0, 44); // { dg-warning "\\\[-Wnonnull]" }
}