https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93059
--- Comment #6 from fdlbxtqi <euloanty at live dot com> --- > What operation are you doing on vector? None of your testcases seem to use > it. void copy_char_vector_with_iter(std::vector<char8_t>::iterator out,std::vector<char> const& bits) { std::copy_n(bits.begin(),bits.size(),out); } https://godbolt.org/z/_yA_Ls See the assembly > > clearly incorrect > > Please distinguish between what is wrong (generated code crashes, or returns > 3 instead of 2), and what is suboptimal. Suppose #ifdef __cpp_lib_is_constant_evaluated is not defined (for C++17) It becomes: return __builtin_memmove(__dst, __src, sizeof(_Tp) * __num); return __dst; ?????