diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2016-09-16 19:09:14 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2016-09-16 19:09:14 +0100 |
commit | 84c08ec96a558fcb648e27f3f4a2e7532079d5bd (patch) | |
tree | b8c56baa281de2eae77e1ec2845a367d9bf8d38d | |
parent | 8d987deb5be9484c103d3a786590c84b54535813 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/new_opa.cc | 2 |
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 |