我想在使用 gcc 编译时保留所有死代码(或者任何明显可以优化的代码),但即使使用-O0
,一些死代码仍然被优化。如何在不更改源代码的情况下保留所有代码?示例代码如下,使用 编译时g++ -S -O0 main.cc
,if-statement
会在汇编代码中进行优化(没有cmpl
和jmp
代码)。
int main() {
constexpr int a = 123; // or const int a = 0; I do not want to remove `const` or `constexpr` qualifier.
if (a) // or just if (123)
return 1;
return 0;
}
一个相关的问题在这里:禁用 gcc 中的“if(0)”消除。但是那里的答案需要您更改我不想做的源代码(删除 const/constexpr 限定符)。
难道是我不更改我的源代码而只使用一些编译器标志来实现这一点?