首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clang和'-O2‘-禁用特定优化

Clang和'-O2‘-禁用特定优化
EN

Stack Overflow用户
提问于 2020-07-19 12:45:58
回答 1查看 76关注 0票数 0

出于性能原因,我必须在我的代码上使用-O2优化级别。问题是编译器会将短字符串(8字节或更少)提升为寄存器,例如:

代码语言:javascript
复制
__text:00000000001348DA                 mov     rcx, 3D3D3D3D3D3D3D3Dh
__text:00000000001348E4                 mov     [rax+10h], rcx
__text:00000000001348E8                 mov     [rax+8], rcx
__text:00000000001348EC                 mov     rcx, 3D3D3D3D3D3D3D0Ah

等于加载字符串“\n====”。

我需要保持字符串作为数据常量,防止将它们提升到寄存器。为了提高性能,我必须保持-O2优化。clang基于LLVM 10。

我请求或帮助,因为我找不到一个标志,关闭这样的优化通过。

EN

回答 1

Stack Overflow用户

发布于 2020-07-19 13:01:52

将这些特定的字符串声明为volatile应该可以防止这种情况发生,但是,真正的问题是,为什么这对您不好?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62976407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档