aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-09-16 19:09:14 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-09-16 19:09:14 +0100
commit84c08ec96a558fcb648e27f3f4a2e7532079d5bd (patch)
treeb8c56baa281de2eae77e1ec2845a367d9bf8d38d
parent8d987deb5be9484c103d3a786590c84b54535813 (diff)
downloadgcc-84c08ec96a558fcb648e27f3f4a2e7532079d5bd.zip
gcc-84c08ec96a558fcb648e27f3f4a2e7532079d5bd.tar.gz
gcc-84c08ec96a558fcb648e27f3f4a2e7532079d5bd.tar.bz2
Replace modulus with mask operation in over-aligned new
2016-09-16 Jonathan Wakely <jwakely@redhat.com> Marc Glisse <marc.glisse@inria.fr> * libsupc++/new_opa.cc [_GLIBCXX_HAVE_ALIGNED_ALLOC] (operator new(size_t, align_val_t)): Replace modulus operator with mask. Co-Authored-By: Marc Glisse <marc.glisse@inria.fr> From-SVN: r240192
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/libsupc++/new_opa.cc2
2 files changed, 8 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index cddff99..21ee3fd 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,4 +1,11 @@
2016-09-16 Jonathan Wakely <jwakely@redhat.com>
+ Marc Glisse <marc.glisse@inria.fr>
+
+ * libsupc++/new_opa.cc [_GLIBCXX_HAVE_ALIGNED_ALLOC]
+ (operator new(size_t, align_val_t)): Replace modulus operator with
+ mask.
+
+2016-09-16 Jonathan Wakely <jwakely@redhat.com>
* libsupc++/new_opa.cc [_GLIBCXX_HAVE_POSIX_MEMALIGN] (aligned_alloc):
Increase alignment if less than sizeof(void*).
diff --git a/libstdc++-v3/libsupc++/new_opa.cc b/libstdc++-v3/libsupc++/new_opa.cc
index 9c859c1..91e53a8 100644
--- a/libstdc++-v3/libsupc++/new_opa.cc
+++ b/libstdc++-v3/libsupc++/new_opa.cc
@@ -69,7 +69,7 @@ operator new (std::size_t sz, std::align_val_t al)
#if _GLIBCXX_HAVE_ALIGNED_ALLOC
/* C11: the value of size shall be an integral multiple of alignment. */
- if (std::size_t rem = sz % align)
+ if (std::size_t rem = sz & (align - 1))
sz += align - rem;
#endif