blob: b9cfbefe7b30afd469a105db2455ba863bd188ec [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-std=c23 -Wzero-as-null-pointer-constant" } */
#define NULL (void*)0
void foo(void*);
void baz(bool);
void bar()
{
foo(0); /* { dg-warning "zero as null pointer constant" } */
foo(NULL);
foo(nullptr);
int a = 0;
bool b = 0;
bool c = (void*)0;
bool d = NULL;
bool e = nullptr;
bool f = (bool)0;
bool g = (bool)(void*)0;
bool h = (bool)NULL;
bool i = (bool)nullptr;
baz(0);
baz((void*)0);
baz(NULL);
baz(nullptr);
baz((bool)0);
baz((bool)(void*)0);
baz((bool)NULL);
baz((bool)nullptr);
void *p = 0; /* { dg-warning "zero as null pointer constant" } */
void *r = NULL;
void *t = nullptr;
void *o = { };
void *q = { 0 }; /* { dg-warning "zero as null pointer constant" } */
void *s = { NULL };
void *u = { nullptr };
struct { void *q; } x = { 0 }; /* { dg-warning "zero as null pointer constant" } */
struct { void *q; } y = { NULL };
struct { void *q; } z = { nullptr };
struct { int a; void *b; } n = { 0 };
struct { int a; int b; void *c; } m = { 0, 0 };
1 ? 0 : 0;
1 ? i : 0;
1 ? 0 : p; /* { dg-warning "zero as null pointer constant" } */
1 ? p : 0; /* { dg-warning "zero as null pointer constant" } */
1 ? 0 : NULL; /* { dg-warning "zero as null pointer constant" } */
1 ? NULL : 0; /* { dg-warning "zero as null pointer constant" } */
0 ? 0 : 1;
(void*)0 ? 0 : 1;
NULL ? 0 : 1;
nullptr ? 0 : 1;
if (0 == 0);
if (i == 0);
if (p == 0); /* { dg-warning "zero as null pointer constant" } */
if (0 == p); /* { dg-warning "zero as null pointer constant" } */
if (NULL == 0); /* { dg-warning "zero as null pointer constant" } */
if (0 == NULL); /* { dg-warning "zero as null pointer constant" } */
if (0 == (void*)0); /* { dg-warning "zero as null pointer constant" } */
if (0 == nullptr); /* { dg-warning "zero as null pointer constant" } */
if (nullptr == 0); /* { dg-warning "zero as null pointer constant" } */
if (0 != 0);
if (i != 0);
if (p != 0); /* { dg-warning "zero as null pointer constant" } */
if (0 != p); /* { dg-warning "zero as null pointer constant" } */
if (NULL != 0); /* { dg-warning "zero as null pointer constant" } */
if (0 != NULL); /* { dg-warning "zero as null pointer constant" } */
if (0 != (void*)0); /* { dg-warning "zero as null pointer constant" } */
if (0 != nullptr); /* { dg-warning "zero as null pointer constant" } */
if (nullptr != 0); /* { dg-warning "zero as null pointer constant" } */
if (0);
if (NULL);
if ((void*)0);
if (nullptr);
if (!0);
if (!NULL);
if (!(void*)0);
if (!nullptr);
if (p);
p ? 0 : 1;
if (!p);
(!p) ? 0 : 1;
int *v;
if (v);
v ? 1 : 0;
if (!v);
(!v) ? 1 : 0;
bool j = p;
bool k = (bool)p;
baz(p);
baz((bool)p);
}