禁用编译时已知表达式的 GCC 简化
Disable GCC simplification of expressions known at compile time
假设我有以下 C 行:
int a = 4 + 7;
编译此行时,GCC 将始终生成类似 mov DWORD PTR [rbp-X], 0xb
的结果,因为此计算的结果是常量并且在编译时已知。有没有办法禁用此行为以使用 mov 4,改为添加 7?
我通过快速搜索找到了 -O0 或 -OG 标志,但它们关闭了其他类型的优化,例如函数应在内存中对齐这一事实。
Is there a way to disable this behaviour to have a mov 4, add 7 instead?
没有。基本常量表达式的计算内置于编译器中。
假设我有以下 C 行:
int a = 4 + 7;
编译此行时,GCC 将始终生成类似 mov DWORD PTR [rbp-X], 0xb
的结果,因为此计算的结果是常量并且在编译时已知。有没有办法禁用此行为以使用 mov 4,改为添加 7?
我通过快速搜索找到了 -O0 或 -OG 标志,但它们关闭了其他类型的优化,例如函数应在内存中对齐这一事实。
Is there a way to disable this behaviour to have a mov 4, add 7 instead?
没有。基本常量表达式的计算内置于编译器中。