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 識別文件級別變量的特徵。