【发布时间】:2020-07-19 04:45:57
【问题描述】:
出于性能原因,我必须在我的代码中使用 -O2 优化级别。问题是编译器将短字符串(8 字节或更少)提升为寄存器,例如:
__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。
我正在询问或帮助,因为我找不到关闭此类优化通过的标志。
【问题讨论】:
标签: c++ clang llvm compiler-optimization