diff --git a/include/__hash_table b/include/__hash_table index 3a2de1d5..71cf5fbf 100644 --- a/include/__hash_table +++ b/include/__hash_table @@ -19,6 +19,7 @@ #include #include <__undef_min_max> +#include <__undef___deallocate> #include <__debug> diff --git a/include/__sso_allocator b/include/__sso_allocator index 645f2ba1..ca3b937c 100644 --- a/include/__sso_allocator +++ b/include/__sso_allocator @@ -15,6 +15,8 @@ #include #include +#include <__undef___deallocate> + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/include/__undef___deallocate b/include/__undef___deallocate new file mode 100644 index 00000000..2b4ad99d --- /dev/null +++ b/include/__undef___deallocate @@ -0,0 +1,18 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifdef __deallocate +#if defined(_MSC_VER) && !defined(__clang__) +_LIBCPP_WARNING("macro __deallocate is incompatible with C++. #undefining __deallocate") +#else +#warning: macro __deallocate is incompatible with C++. #undefining __deallocate +#endif +#undef __deallocate +#endif diff --git a/include/experimental/dynarray b/include/experimental/dynarray index 0bc8dfe2..a0258628 100644 --- a/include/experimental/dynarray +++ b/include/experimental/dynarray @@ -104,6 +104,8 @@ public: #include #include +#include <__undef___deallocate> + #if defined(_LIBCPP_NO_EXCEPTIONS) #include #endif diff --git a/include/memory b/include/memory index 40fc8ae0..7085ceda 100644 --- a/include/memory +++ b/include/memory @@ -615,6 +615,7 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space); #endif #include <__undef_min_max> +#include <__undef___deallocate> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/include/module.modulemap b/include/module.modulemap index 6aeb23f0..3c0700ec 100644 --- a/include/module.modulemap +++ b/include/module.modulemap @@ -469,4 +469,5 @@ module std [system] { module __tree { header "__tree" export * } module __tuple { header "__tuple" export * } module __undef_min_max { header "__undef_min_max" export * } + module __undef___deallocate { header "__undef___deallocate" export * } } diff --git a/include/new b/include/new index a710ed93..eebe5af3 100644 --- a/include/new +++ b/include/new @@ -68,6 +68,8 @@ void operator delete[](void* ptr, void*) noexcept; #include #include +#include <__undef___deallocate> + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif diff --git a/include/valarray b/include/valarray index 2b942046..bdaa5883 100644 --- a/include/valarray +++ b/include/valarray @@ -348,6 +348,7 @@ template unspecified2 end(const valarray& v); #include #include <__undef_min_max> +#include <__undef___deallocate> #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header