mpx_wrappers.c (__mpx_wrapper_memmove): Special handling of one pointer copy.
authorTsvetkova Alexandra <aleksandra.tsvetkova@intel.com>
Tue, 29 Dec 2015 12:52:42 +0000 (12:52 +0000)
committerIlya Enkovich <ienkovich@gcc.gnu.org>
Tue, 29 Dec 2015 12:52:42 +0000 (12:52 +0000)
libmpx/

2015-12-29  Tsvetkova Alexandra  <aleksandra.tsvetkova@intel.com>

* libmpxwrap/mpx_wrappers.c (__mpx_wrapper_memmove): Special
handling of one pointer copy.

From-SVN: r231991

libmpx/ChangeLog
libmpx/mpxwrap/mpx_wrappers.c

index 93924a8e6ddba95d4c52f06256f76b7420d19c33..d53080778495c51b4301e6229acfbc7c10e486c2 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-29  Tsvetkova Alexandra  <aleksandra.tsvetkova@intel.com>
+
+       * libmpxwrap/mpx_wrappers.c (__mpx_wrapper_memmove): Special
+       handling of one pointer copy.
+
 2015-12-11  Tsvetkova Alexandra  <aleksandra.tsvetkova@intel.com>
 
        * mpxrt/Makefile.am (libmpx_la_LDFLAGS): Add -version-info
index ffa7e7ee5fff161329ac220ed298966b6151c20f..4df4e9e76e8ffb4bf75ee3597ee90301b78266a9 100644 (file)
@@ -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))