From 0bf0df50e5a18e7b707ba0091cb86e1bd388d4b3 Mon Sep 17 00:00:00 2001 From: Tsvetkova Alexandra Date: Tue, 29 Dec 2015 12:52:42 +0000 Subject: [PATCH] mpx_wrappers.c (__mpx_wrapper_memmove): Special handling of one pointer copy. libmpx/ 2015-12-29 Tsvetkova Alexandra * libmpxwrap/mpx_wrappers.c (__mpx_wrapper_memmove): Special handling of one pointer copy. From-SVN: r231991 --- libmpx/ChangeLog | 5 +++++ libmpx/mpxwrap/mpx_wrappers.c | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/libmpx/ChangeLog b/libmpx/ChangeLog index 93924a8e6dd..d5308077849 100644 --- a/libmpx/ChangeLog +++ b/libmpx/ChangeLog @@ -1,3 +1,8 @@ +2015-12-29 Tsvetkova Alexandra + + * libmpxwrap/mpx_wrappers.c (__mpx_wrapper_memmove): Special + handling of one pointer copy. + 2015-12-11 Tsvetkova Alexandra * mpxrt/Makefile.am (libmpx_la_LDFLAGS): Add -version-info diff --git a/libmpx/mpxwrap/mpx_wrappers.c b/libmpx/mpxwrap/mpx_wrappers.c index ffa7e7ee5ff..4df4e9e76e8 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 *)) + { + const void **s = (const void**)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)) -- 2.30.2