[gcc(refs/vendors/ibm/heads/gcc-9-branch)] PR libstdc++/92143 adjust for OS X aligned_alloc behaviour

Peter Bergner bergner@gcc.gnu.org
Tue Feb 4 22:03:00 GMT 2020


https://gcc.gnu.org/g:f37b9e32f7498e0f8bb287aae19cfc3e8efd4cab

commit f37b9e32f7498e0f8bb287aae19cfc3e8efd4cab
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Oct 24 13:54:44 2019 +0100

    PR libstdc++/92143 adjust for OS X aligned_alloc behaviour
    
    OS X 10.15 adds aligned_alloc but it has the same restriction as the AIX
    version, namely that alignments smaller than sizeof(void*) are not
    supported.
    
    Backport from mainline
    2019-10-18  Jonathan Wakely  <jwakely@redhat.com>
    
    	PR libstdc++/92143
    	* libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
    	to at least sizeof(void*).
    
    From-SVN: r277386

Diff:
---
 libstdc++-v3/ChangeLog            | 7 +++++++
 libstdc++-v3/libsupc++/new_opa.cc | 5 +++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ca192d1..00cab77 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,6 +1,13 @@
 2019-10-24  Jonathan Wakely  <jwakely@redhat.com>
 
 	Backport from mainline
+	2019-10-18  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/92143
+	* libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
+	to at least sizeof(void*).
+
+	Backport from mainline
 	2019-06-06  Jonathan Wakely  <jwakely@redhat.com>
 
 	* testsuite/23_containers/unordered_map/requirements/debug_container.cc:
diff --git a/libstdc++-v3/libsupc++/new_opa.cc b/libstdc++-v3/libsupc++/new_opa.cc
index 0303ecd..8143c12 100644
--- a/libstdc++-v3/libsupc++/new_opa.cc
+++ b/libstdc++-v3/libsupc++/new_opa.cc
@@ -114,9 +114,10 @@ operator new (std::size_t sz, std::align_val_t al)
     sz = 1;
 
 #if _GLIBCXX_HAVE_ALIGNED_ALLOC
-# ifdef _AIX
+# if defined _AIX || defined __APPLE__
   /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement
-   * that alignment is a multiple of sizeof(void*).  */
+   * that alignment is a multiple of sizeof(void*).
+   * OS X 10.15 has the same requirement.  */
   if (align < sizeof(void*))
     align = sizeof(void*);
 # endif



More information about the Libstdc++-cvs mailing list