fix destroying delete test with older apple compilers

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@361593 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/std/language.support/support.dynamic/destroying_delete_t.pass.cpp b/test/std/language.support/support.dynamic/destroying_delete_t.pass.cpp
index d544b0e..a2c9b8b 100644
--- a/test/std/language.support/support.dynamic/destroying_delete_t.pass.cpp
+++ b/test/std/language.support/support.dynamic/destroying_delete_t.pass.cpp
@@ -14,6 +14,8 @@
 
 // UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
 
+// UNSUPPORTED: apple-clang-9, apple-clang-10
+
 #include <new>
 
 #include <cassert>
diff --git a/test/std/language.support/support.dynamic/destroying_delete_t_declaration.pass.cpp b/test/std/language.support/support.dynamic/destroying_delete_t_declaration.pass.cpp
new file mode 100644
index 0000000..b0e42ec
--- /dev/null
+++ b/test/std/language.support/support.dynamic/destroying_delete_t_declaration.pass.cpp
@@ -0,0 +1,52 @@
+//===----------------------------------------------------------------------===//
+//
+//                     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.
+//
+//===----------------------------------------------------------------------===//
+
+// struct destroying_delete_t {
+//   explicit destroying_delete_t() = default;
+// };
+// inline constexpr destroying_delete_t destroying_delete{};
+
+// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17
+
+// Test only the library parts of destroying delete in this test.
+// Verify that it's properly declared after C++17 and that it's constexpr.
+//
+// Other tests will check the language side of things -- but those are
+// limited to newer compilers.
+
+#include <new>
+
+#include <cassert>
+#include "test_macros.h"
+#include "test_convertible.hpp"
+
+#ifdef __cpp_impl_destroying_delete
+# ifndef __cpp_lib_destroying_delete
+#   error "Expected __cpp_lib_destroying_delete to be defined"
+#   elif __cpp_lib_destroying_delete < 201806L
+#     error "Unexpected value of __cpp_lib_destroying_delete"
+#   endif
+#else
+# ifdef __cpp_lib_destroying_delete
+#   error "__cpp_lib_destroying_delete should not be defined unless the compiler supports it"
+# endif
+#endif
+
+constexpr bool test_constexpr(std::destroying_delete_t) {
+  return true;
+}
+
+int main() {
+  static_assert(std::is_default_constructible<std::destroying_delete_t>::value, "");
+  static_assert(!test_convertible<std::destroying_delete_t>(), "");
+  constexpr std::destroying_delete_t dd{};
+  static_assert((dd, true), "");
+  static_assert(&dd != &std::destroying_delete, "");
+  static_assert(test_constexpr(std::destroying_delete), "");
+}