2011-04-05 103 views
15

我有一些遺留代碼,編譯-02和-03集合。從GCC男子文件,我得到了保證:GCC多個優化標記

-O3開啓所有-O2指定的優化並開啓對-finline的功能,-funswitch-循環,-fpredictive-共用,-fgcse-後加載和-ftree-vectorize 選項。

因此,乍一看,將這兩個標誌打開的可能性與-O3相同。然而,這讓我想到,在這種情況下做正確的事情是-O2可能是「更安全」的選擇。顯然,這是一件簡單的事情,用所有的排列方式編譯一些代碼,看看每種情況下會發生什麼,但我想知道是否有人知道GCC是否有指定多個優化級別的具體策略,以及如果有的話是背後的推理嗎?

回答

29

man page

如果使用多個-O選項,有或無級數字,最後一個這樣的選擇是一個是有效的。