aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2019-06-17 16:51:31 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2019-06-17 16:51:31 +0100
commit39f901e918c42935d1acf5ad87b79ae1b38a666b (patch)
tree4448e0e52ce54200776d754e84f785b44a97c6d2
parent35d57c957268c29056192f312c279fb08b4af0ea (diff)
downloadgcc-39f901e918c42935d1acf5ad87b79ae1b38a666b.zip
gcc-39f901e918c42935d1acf5ad87b79ae1b38a666b.tar.gz
gcc-39f901e918c42935d1acf5ad87b79ae1b38a666b.tar.bz2
Fix AIX test failure due to replacement operator delete
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
-rw-r--r--libstdc++-v3/ChangeLog3
-rw-r--r--libstdc++-v3/testsuite/20_util/allocator/1.cc15
2 files changed, 17 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8311111..40d1b0b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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
diff --git a/libstdc++-v3/testsuite/20_util/allocator/1.cc b/libstdc++-v3/testsuite/20_util/allocator/1.cc
index 8ea0895..c8a74da 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/1.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/1.cc
@@ -24,6 +24,12 @@
#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;