[PATCH, libstdc++] More

Jonathan Wakely jwakely@redhat.com
Mon Nov 25 21:15:00 GMT 2019


On 15/11/19 22:17 -0500, Ed Smith-Rowland via libstdc++ wrote:
>Index: include/bits/stl_algobase.h
>===================================================================
>--- include/bits/stl_algobase.h	(revision 278318)
>+++ include/bits/stl_algobase.h	(working copy)
>@@ -107,6 +107,50 @@
>     }
> 
>   /*
>+   * A constexpr wrapper for __builtin_memmove.

This should say __builtin_memcpy.

>+   * @param __num The number of elements of type _Tp (not bytes).
>+   */
>+  template<typename _Tp>
>+    _GLIBCXX14_CONSTEXPR
>+    inline void*
>+    __memcpy(_Tp* __dst, const _Tp* __src, size_t __num)
>+    {
>+#ifdef __cpp_lib_is_constant_evaluated
>+      if (std::is_constant_evaluated())
>+	{
>+	  for(; __num > 0; --__num)
>+	    *__dst++ = *__src++;
>+	  return __dst;
>+	}
>+      else
>+#endif
>+	return __builtin_memcpy(__dst, __src, sizeof(_Tp) * __num);
>+      return __dst;
>+    }
>+
>+  /*
>+   * A constexpr wrapper for __builtin_memmove.

And this should say __builtin_memset.

>+   * @param __num The number of elements of type _Tp (not bytes).
>+   */
>+  template<typename _Tp>
>+    _GLIBCXX14_CONSTEXPR
>+    inline void*
>+    __memset(_Tp* __dst, _Tp __a, size_t __num)
>+    {
>+#ifdef __cpp_lib_is_constant_evaluated
>+      if (std::is_constant_evaluated())
>+	{
>+	  for(; __num > 0; --__num)
>+	    *__dst = __a;
>+	  return __dst;
>+	}
>+      else
>+#endif
>+	return __builtin_memset(__dst, __a, sizeof(_Tp) * __num);
>+      return __dst;
>+    }

OK for trunk with those two comment fixes. Thanks.




More information about the Libstdc++ mailing list