1. –O0
l 简化控制流图
l 分配变量到寄存器
l 进行循环旋转(loop rotation)
l 删除未使用的代码
l 简化表达式和语句
l 内联声明为inline的函数
2. –O2
l 执行局部复制/常量传递
l 删除未使用的赋值语句
l 删除局部共有表达式
3. –O2
l 进行软件流水
l 进行循环优化
l 删除全局共有子表达式
l 删除全局未使用的赋值语句
l 把循环中的对数组的引用转化为递增的指针形式
l 把循环展开
4. –O3
l 删除未使用的所有的函数
l 当函数的返回值没用到时,简化函数的返回形式
l 内联小的函数
l 重新对函数的声明进行排序。这样当优化调用代码时,被调用函数的属性是已知的
l 当所有调用都传递一个相同的参数时,把这个参数直接放到函数体中去,不在通过寄存器/存储器的方式传递这个参数。
l 识别文件级别变量的特征。