diff --git a/clang/lib/Headers/stddef.h b/clang/lib/Headers/stddef.h index 9c90fea4de64..97126ed15276 100644 --- a/clang/lib/Headers/stddef.h +++ b/clang/lib/Headers/stddef.h @@ -76,7 +76,6 @@ typedef __WCHAR_TYPE__ wchar_t; #else # define NULL ((void*)0) #endif -#undef __need_NULL #ifdef __cplusplus #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) @@ -103,21 +102,6 @@ typedef double max_align_t; #endif /* __STDDEF_H */ -/* Some C libraries set __need_NULL and expects NULL to be defined again. */ -#if defined(__need_NULL) -#undef NULL -#ifdef __cplusplus -# if !defined(__MINGW32__) && !defined(_MSC_VER) -# define NULL __null -# else -# define NULL 0 -# endif -#else -# define NULL ((void*)0) -#endif -#undef __need_NULL -#endif - /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ #if defined(__need_wint_t) diff --git a/clang/test/Headers/needsnull.cpp b/clang/test/Headers/needsnull.cpp deleted file mode 100644 index 267cb5ddc31f..000000000000 --- a/clang/test/Headers/needsnull.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// RUN: %clang_cc1 -fsyntax-only -triple i386-linux-gnu -verify -Wsentinel %s -// expected-no-diagnostics - -#include - -// linux/stddef.h does something like this for cpp files: -#undef NULL -#define NULL 0 - -// glibc (and other) headers then define __need_NULL and rely on stddef.h -// to redefine NULL to the correct value again. -#define __need_NULL -#include - -// gtk headers then use __attribute__((sentinel)), which doesn't work if NULL -// is 0. -void f(const char* c, ...) __attribute__((sentinel)); -void g() { - f("", NULL); // Shouldn't warn. -}