-O0 -O1 -O2 -O3 -Os -Ofast -Og 编译选项优化差异:
GCC官网
GCC, the GNU Compiler Collection- GNU Project
找到对应的GCC版本,
可查看不同优化等级编译选项的差异
局部禁用优化:
函数禁用优化
为函数设置__attribute__((optimize(“O0”)))属性
#include <stdio.h>
void __attribute__((optimize("O0"))) blabla(void) {
}
int main(void) {
blabla();
return 0;
}
代码段禁用优化
gcc
#pragma GCC push_options
#pragma GCC optimize ("O0")
// your code
#pragma GCC pop_options
vs
#pragma optimize("", off)
// your code
#pragma optimize("", on)
clang
#pragma clang optimize off
// your code
#pragma clang optimize on
变量禁用优化
使用volatile关键字