败犬日报 2025-02-02
败犬日报 2025-02-02
1. inline 对内联优化的影响
我们知道,inline 现在最主要的作用是允许函数、变量的定义在多个翻译单元出现。
除此之外 inline 让编译器更倾向于内联优化(只是影响很小)。
LLVM IR 有一个 inlinehint 属性。根据 LLVM IR 参考文档关于 inlinehint 的说明:
此属性表示源代码包含了一个提示,表明内联此函数是可取的(例如 C/C++ 中的"inline"关键字)。这只是一种提示,不会对内联器施加任何要求。
inline 关键字与优化有关,而且优化器会关心你是否添加了它,但也没有太大影响。如果你真的想要内联一个函数,我想你应该添加 always_inline 说明符,这是完全不同的情况:除非完全不可能,否则编译器将始终内联这些函数。
https://github.com/llvm/llvm-project/commit/74bb06c0f02e650ea9ec73729f41a620fc55a8ee