https://gcc.gnu.org/g:fc89b1face0d207710eaa3d8f5af3adcffd5c5c9
commit r15-9475-gfc89b1face0d207710eaa3d8f5af3adcffd5c5c9 Author: Sandra Loosemore <sloosem...@baylibre.com> Date: Tue Apr 15 03:49:06 2025 +0000 Doc: always_inline attribute vs multiple TUs and LTO [PR113203] gcc/ChangeLog PR ipa/113203 * doc/extend.texi (Common Function Attributes): Explain how to use always_inline in programs that have multiple translation units, and that LTO inlining additionally needs optimization enabled. Diff: --- gcc/doc/extend.texi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 3a8e57065150..5bc2785f8025 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -1933,6 +1933,13 @@ Note that if such a function is called indirectly the compiler may or may not inline it depending on optimization level and a failure to inline an indirect call may or may not be diagnosed. +If you need to use the inlined function in multiple translation units, +you should put the @code{always_inline} attribute on a function +definition in a header file that is included in all translation units +where the function is used. Link-time optimization can inline +functions across translation units, but only if an optimization level +that normally enables inlining is additionally specified. + @cindex @code{artificial} function attribute @item artificial This attribute is useful for small inline wrappers that if possible