summaryrefslogtreecommitdiff
path: root/libmpx/mpxwrap/mpx_wrappers.c
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-16 17:02:56 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-16 17:02:56 +0000
commitc8aed844acdc89884d630c7e3266ecd8d4101847 (patch)
tree0d046a9255339220c1bbd6ba14e84e5304acbe10 /libmpx/mpxwrap/mpx_wrappers.c
parent74f8420a5b204c5e021ce05b3d0d79ba9718360a (diff)
downloadgcc-c8aed844acdc89884d630c7e3266ecd8d4101847.tar.gz
2016-04-16 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with even more of GCC 6, using subversion 1.9 svn merge -r231651:232605 ^/trunk }} [gcc/] 2016-04-16 Basile Starynkevitch <basile@starynkevitch.net> * melt/libmelt-ana-gimple.melt: (melt_build_transaction_with_label_norm): New inlined function, for gimple_transaction operator implementation... git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@235064 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libmpx/mpxwrap/mpx_wrappers.c')
-rw-r--r--libmpx/mpxwrap/mpx_wrappers.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libmpx/mpxwrap/mpx_wrappers.c b/libmpx/mpxwrap/mpx_wrappers.c
index ffa7e7ee5ff..d4c83ef484c 100644
--- a/libmpx/mpxwrap/mpx_wrappers.c
+++ b/libmpx/mpxwrap/mpx_wrappers.c
@@ -483,7 +483,18 @@ __mpx_wrapper_memmove (void *dst, const void *src, size_t n)
__bnd_chk_ptr_bounds (dst, n);
__bnd_chk_ptr_bounds (src, n);
+ /* When we copy exactly one pointer it is faster to
+ just use bndldx + bndstx. */
+ if (n == sizeof (void *))
+ {
+ void *const *s = (void *const *) src;
+ void **d = (void **) dst;
+ *d = *s;
+ return dst;
+ }
+
memmove (dst, src, n);
+
/* Not necessary to copy bounds if size is less then size of pointer
or SRC==DST. */
if ((n >= sizeof (void *)) && (src != dst))