【问题标题】:Does the inline keyword affect link time optimization? [duplicate]inline 关键字会影响链接时间优化吗? [复制]
【发布时间】:2015-08-15 10:00:54
【问题描述】:

如果在启用链接时间优化 (-flto) 的情况下调用 gcc 并且我正在使用以下关键字/属性之一:

__attribute__((always_inline)) void foo(int i);
inline void bar(int i);

此关键字/属性是否影响链接时优化的行为(如果编译器无法执行inlineing)?

链接时优化是否更喜欢inlineing 这些函数而不是没有此关键字/属性的函数。

问题是它是否对链接器-阶段处理而不是编译器产生影响。

【问题讨论】:

  • 我不认为 LTO 对这种情况的影响与属性文档中已经解释的有很大不同。

标签: c++ c gcc linker inline


【解决方案1】:

根据之前在此处找到的答案:what “inline __attribute__((always_inline))” means in the function?

__attribute__((always_inline))

即使在首选项中禁用它,编译器也会尝试内联它,并且

inline

告诉编译器非常努力地内联函数。

【讨论】:

  • OP 的问题是它如何影响链接时间而不是编译时间
  • 那里的答案只是指出要彻底阅读文档,这也是我在这种情况下所推荐的。您可能应该将该问题标记为与您找到的内容重复。尽管您提供了链接答案 +1 所提供的更多信息。
  • 当我点击“标记”时,最接近复制的选项是“需要主持人干预”。这是我以后应该做的吗?
  • 编辑了问题。我想知道 LTO(链接器)如何处理这些关键字,而不是编译器。
  • 显然链接器执行自动内联,因此通过将该过程转移到编译器阶段,您可以加快链接阶段。不过,实际上可能并没有使整个过程更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多