如何在不指定-O1的情况下获得gcc -O1优化

neu*_*cer 5 c compiler-construction optimization gcc

我知道-O1会自动打开某些标志.这些标志可以手动打开.如果我没有指定-O1,那么仍然可以通过指定-O1打开的所有标志来获得-O1优化.

我试过了

-fthread-jumps -fcprop-registers -fguess-branch-probability
Run Code Online (Sandbox Code Playgroud)

但它仍然没有做-O1优化.我可以告诉我何时使用gprof,因为性能不是很好.

我打开哪些标志来获得-O1优化?

int*_*nt3 13

一种方法可以找到:

gcc -O1 -c -Q -v dummy.c
Run Code Online (Sandbox Code Playgroud)

(其中dummy.c是你的文件名.)这会导致gcc将用于命令行的标志喷出.

编辑:请参阅kastauyra的答案.看来你无法单独-O1使用-f标志来模拟完全优化.


Lau*_*nis 11

不幸的是,这是不可能的.-O1启用了许多单独的优化标志,为true,但是GCC中的许多代码检查全局优化标志值并执行未由-f ..选项指定的优化.

  • "并非所有优化都由标志直接控制.本节仅列出具有标志的优化.大多数优化仅在命令行上设置-O级别时启用.否则它们被禁用,即使单个优化标志也是如此已指定."来自:http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html (7认同)
  • 文档没有说明(可能会接受改变这个的补丁).但是这可以从源代码中看到(检查地点数量,如果(优化> 0)......不检查单个标志),这也是在GCC邮件列表上询问的:http://gcc.gnu.组织/毫升/ GCC-帮助/ 2008-02/msg00389.html (3认同)