【问题标题】:gcc -finline-functions optiongcc -finline-functions 选项
【发布时间】:2011-09-26 13:01:23
【问题描述】:

我对 -finline-function 选项有疑问

我们正在测试我们实现的函数是否成功内联。 以下是观察结果

  1. 函数正在内联 -01、-O2 和 -O3 优化级别。
  2. 函数未针对优化级别 -O0 进行内联,这是预期的。

当我们尝试同时使用 -O0 和 -finline-functions 进行编译时,我们仍然观察到这些函数没有被内联。我们甚至尝试了一个非常简单的方法(一行 return 语句)并观察到相同的结果。

因此,使用 -finline-functions 标志和 -O0 似乎是多余的(它不会使函数内联)。我仍在搜索 gcc/g++ 手册中是否记录了这种行为。请让我们知道是否有人对 g++ 的工作原理有确切的了解,同时指定 -finline-functions 和 -O0。

问候

【问题讨论】:

    标签: gcc inline compiler-optimization


    【解决方案1】:

    来自 gcc 手册(http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html):

    大多数优化只有在命令行上设置了 -O 级别时才会启用。否则,即使指定了单独的优化标志,它们也会被禁用。

    【讨论】:

    • 感谢您的链接。我确实扔了那个页面,但不知何故错过了那一行!再次感谢...
    【解决方案2】:

    像这样定义你的函数inline void foo (const char) __attribute__((always_inline));

    来自网站 (https://gcc.gnu.org/onlinedocs/gcc/Inline.html)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 2021-12-08
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多