如何解决MSVC:无效的memcpy优化?
考虑以下代码:
protected initialize<T>(props: Record<keyof typeof T,string>): void {
for (const [key,value] of Object.entries(props)) {
this.setAttribute(key.toLowerCase(),value);
}
}
带有/ O2的MSVC(16.7.1)x86为该功能生成以下程序集:
void MemMove8(void* dst,void* src)
{
char tmp[8];
memcpy(tmp,src,8);
memcpy(dst,tmp,8);
}
但是,如果输入和输出缓冲区重叠,这将不起作用(在某些情况下)。
生成的代码对我来说似乎是错误的;还是这是有效的转换,我在这里缺少什么?
解决方法
这是一个错误。
这似乎已在VS 16.8中得到解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。