我有一些遗留代码,可以使用-02和-03集合进行编译.从GCC man文件中我得到以下保证:
-O3打开-O2指定的所有优化,并打开-finline-functions,-funswitch-loops,-fpredictive-commoning,-fgcse-after-reload和-ftree-vectorize选项.
因此,乍看之下,打开这两个标志似乎与-O3相同.然而,让我想到的是,在这种情况下做正确的事情是-O2可能是"更安全"的选择.显然,编译一些具有所有排列的代码并查看每种情况会发生什么是一件简单的事情,但我想知道是否有人知道GCC是否有关于指定多个优化级别的具体策略,如果是的话它背后的原因是什么?