[Bug libstdc++/93059] char and char8_t does not talk with each other with memcpy. std::copy std::copy_n, std::fill, std::fill_n, std::uninitialized_copy std::uninitialized_copy_n, std::fill, std::uninitialized_fill_n fails to convert to memxxx functions

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Feb 26 15:00:00 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93059

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-02-26
     Ever confirmed|0                           |1

--- Comment #36 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Patches should be sent to the mailing list, and a copyright assignment (or
public domain disclaimer) would be needed for a patch of this size. Otherwise,
leave it to me to do once we start the GCC 11 dev phase.

Adding checks for types satisfying contiguous_iterator looks worthwhile, but
should be a separate patch.

I think the condition for using memmove should be something like:

  __are_same<_ValueTypeI, _ValueTypeO>::__value
  || (__is_integer<_ValueTypeI>::__value
      && __is_integer<_ValueTypeo>::__value
      && sizeof(_ValueTypeI) == sizeof(_ValueTypeO))


More information about the Gcc-bugs mailing list