Author: rsmith Date: Thu Oct 8 20:41:45 2015 New Revision: 249800 URL: http://llvm.org/viewvc/llvm-project?rev=249800&view=rev Log: Split <stdlib.h> out of <cstdlib>.
Added: libcxx/trunk/include/stdlib.h - copied, changed from r249736, libcxx/trunk/include/cstdlib Modified: libcxx/trunk/include/cstdlib libcxx/trunk/test/std/depr/depr.c.headers/stdlib_h.pass.cpp Modified: libcxx/trunk/include/cstdlib URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/cstdlib?rev=249800&r1=249799&r2=249800&view=diff ============================================================================== --- libcxx/trunk/include/cstdlib (original) +++ libcxx/trunk/include/cstdlib Thu Oct 8 20:41:45 2015 @@ -84,9 +84,6 @@ void *aligned_alloc(size_t alignment, si #include <__config> #include <stdlib.h> -#ifdef _LIBCPP_MSVCRT -#include "support/win32/locale_win32.h" -#endif // _LIBCPP_MSVCRT #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header @@ -131,20 +128,14 @@ using ::getenv; using ::system; using ::bsearch; using ::qsort; -#undef abs using ::abs; -#undef labs using ::labs; #ifndef _LIBCPP_HAS_NO_LONG_LONG -#undef llabs using ::llabs; #endif // _LIBCPP_HAS_NO_LONG_LONG -#undef div using ::div; -#undef ldiv using ::ldiv; #ifndef _LIBCPP_HAS_NO_LONG_LONG -#undef lldiv using ::lldiv; #endif // _LIBCPP_HAS_NO_LONG_LONG #ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS @@ -162,19 +153,6 @@ using ::quick_exit; using ::aligned_alloc; #endif -// MSVCRT already has the correct prototype in <stdlib.h> #ifdef __cplusplus -#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX) -inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} -#ifndef _LIBCPP_HAS_NO_LONG_LONG -inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);} -#endif // _LIBCPP_HAS_NO_LONG_LONG - -inline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);} -#ifndef _LIBCPP_HAS_NO_LONG_LONG -inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);} -#endif // _LIBCPP_HAS_NO_LONG_LONG -#endif // _LIBCPP_MSVCRT - _LIBCPP_END_NAMESPACE_STD #endif // _LIBCPP_CSTDLIB Copied: libcxx/trunk/include/stdlib.h (from r249736, libcxx/trunk/include/cstdlib) URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/stdlib.h?p2=libcxx/trunk/include/stdlib.h&p1=libcxx/trunk/include/cstdlib&r1=249736&r2=249800&rev=249800&view=diff ============================================================================== --- libcxx/trunk/include/cstdlib (original) +++ libcxx/trunk/include/stdlib.h Thu Oct 8 20:41:45 2015 @@ -1,5 +1,5 @@ // -*- C++ -*- -//===--------------------------- cstdlib ----------------------------------===// +//===--------------------------- stdlib.h ---------------------------------===// // // The LLVM Compiler Infrastructure // @@ -8,11 +8,19 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_CSTDLIB -#define _LIBCPP_CSTDLIB +#if defined(__need_malloc_and_calloc) + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +#include_next <stdlib.h> + +#elif !defined(_LIBCPP_STDLIB_H) +#define _LIBCPP_STDLIB_H /* - cstdlib synopsis + stdlib.h synopsis Macros: @@ -22,9 +30,6 @@ Macros: NULL RAND_MAX -namespace std -{ - Types: size_t @@ -78,91 +83,33 @@ int at_quick_exit(void (*func)(void)) void quick_exit(int status); // C++11 void *aligned_alloc(size_t alignment, size_t size); // C11 -} // std - */ #include <__config> -#include <stdlib.h> -#ifdef _LIBCPP_MSVCRT -#include "support/win32/locale_win32.h" -#endif // _LIBCPP_MSVCRT #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD +#include_next <stdlib.h> + +#ifdef __cplusplus +extern "C++" { + +#ifdef _LIBCPP_MSVCRT +#include "support/win32/locale_win32.h" +#endif // _LIBCPP_MSVCRT -using ::size_t; -using ::div_t; -using ::ldiv_t; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::lldiv_t; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::atof; -using ::atoi; -using ::atol; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::atoll; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::strtod; -using ::strtof; -using ::strtold; -using ::strtol; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::strtoll; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::strtoul; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -using ::strtoull; -#endif // _LIBCPP_HAS_NO_LONG_LONG -using ::rand; -using ::srand; -using ::calloc; -using ::free; -using ::malloc; -using ::realloc; -using ::abort; -using ::atexit; -using ::exit; -using ::_Exit; -using ::getenv; -using ::system; -using ::bsearch; -using ::qsort; #undef abs -using ::abs; -#undef labs -using ::labs; -#ifndef _LIBCPP_HAS_NO_LONG_LONG -#undef llabs -using ::llabs; -#endif // _LIBCPP_HAS_NO_LONG_LONG #undef div -using ::div; +#undef labs #undef ldiv -using ::ldiv; #ifndef _LIBCPP_HAS_NO_LONG_LONG +#undef llabs #undef lldiv -using ::lldiv; -#endif // _LIBCPP_HAS_NO_LONG_LONG -#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS -using ::mblen; -using ::mbtowc; -using ::wctomb; -#endif -using ::mbstowcs; -using ::wcstombs; -#ifdef _LIBCPP_HAS_QUICK_EXIT -using ::at_quick_exit; -using ::quick_exit; -#endif -#ifdef _LIBCPP_HAS_C11_FEATURES -using ::aligned_alloc; #endif -// MSVCRT already has the correct prototype in <stdlib.h> #ifdef __cplusplus +// MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined #if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX) inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} #ifndef _LIBCPP_HAS_NO_LONG_LONG @@ -173,8 +120,9 @@ inline _LIBCPP_INLINE_VISIBILITY ldiv_t #ifndef _LIBCPP_HAS_NO_LONG_LONG inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);} #endif // _LIBCPP_HAS_NO_LONG_LONG -#endif // _LIBCPP_MSVCRT +#endif // _LIBCPP_MSVCRT / __sun__ / _AIX -_LIBCPP_END_NAMESPACE_STD +} // extern "C++" +#endif // __cplusplus -#endif // _LIBCPP_CSTDLIB +#endif // _LIBCPP_STDLIB_H Modified: libcxx/trunk/test/std/depr/depr.c.headers/stdlib_h.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/depr/depr.c.headers/stdlib_h.pass.cpp?rev=249800&r1=249799&r2=249800&view=diff ============================================================================== --- libcxx/trunk/test/std/depr/depr.c.headers/stdlib_h.pass.cpp (original) +++ libcxx/trunk/test/std/depr/depr.c.headers/stdlib_h.pass.cpp Thu Oct 8 20:41:45 2015 @@ -18,6 +18,30 @@ #pragma clang diagnostic ignored "-Wnonnull" #endif +#ifdef abs +#error abs is defined +#endif + +#ifdef labs +#error labs is defined +#endif + +#ifdef llabs +#error llabs is defined +#endif + +#ifdef div +#error div is defined +#endif + +#ifdef ldiv +#error ldiv is defined +#endif + +#ifdef lldiv +#error lldiv is defined +#endif + #ifndef EXIT_FAILURE #error EXIT_FAILURE not defined #endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits