Fix AIX test failure due to replacement operator delete
authorJonathan Wakely <jwakely@redhat.com>
Mon, 17 Jun 2019 15:51:31 +0000 (16:51 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 17 Jun 2019 15:51:31 +0000 (16:51 +0100)
On AIX the sized delete defined in the library will call the non-sized
delete defined in the library, not the replacement version defined in
the test file. By also replacing sized delete we make the test pass
everywhere.

* testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
failure on AIX.

From-SVN: r272391

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/20_util/allocator/1.cc

index 8311111..40d1b0b 100644 (file)
@@ -1,5 +1,8 @@
 2019-06-17  Jonathan Wakely  <jwakely@redhat.com>
 
+       * testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
+       failure on AIX.
+
        * include/c_global/cmath (__lerp, lerp): Add noexcept (LWG 3201).
 
        PR libstdc++/90281 Fix string conversions for filesystem::path
index 8ea0895..c8a74da 100644 (file)
 #include <cstdlib>
 #include <testsuite_hooks.h>
 
+#if __cplusplus >= 201103L
+# define NOTHROW noexcept
+#else
+# define NOTHROW throw()
+#endif
+
 struct gnu { };
 
 bool check_new = false;
@@ -36,12 +42,19 @@ operator new(std::size_t n) THROW(std::bad_alloc)
   return std::malloc(n);
 }
 
-void operator delete(void *v) throw()
+void operator delete(void *v) NOTHROW
 {
   check_delete = true;
   return std::free(v);
 }
 
+#if __cpp_sized_deallocation
+void operator delete(void *v, std::size_t) NOTHROW
+{
+  ::operator delete(v);
+}
+#endif
+
 void test01()
 {
   std::allocator<gnu> obj;