How does inline definitions affect inlining heuristics for C++?

Ángel González keisial@gmail.com
Tue Oct 30 06:30:00 GMT 2012


On 28/10/12 14:12, Ulf Magnusson wrote:
> Hi,
>
> When not using whole program or link-time optimization, the body of a
> function must be available to the compiler for it to be able to inline
> calls the function when compiling a TU. Hence, you might want to put a
> function that is used in multiple TUs in a header file to give the
> compiler the opportunity to inline it. However, this forces you to
> make the function inline, as multiple definitions of non-inline
> functions is not allowed. It seems inline might be used for two
> different purposes here:
>
> (1) To make the function body available to the compiler to give it the
> opportunity to inline.
> (2) To give the compiler a hint to inline the function.
>
> But what if you trust the compiler to make the right decision for the
> function and don't want to influence the inlining heuristics? I.e.,
> what if you only want (1) and not (2)?
>
> Which brings me to my questions:
>
>  - How does making a function inline influence GCC's inlining
> heuristics for C++?
>  - If it does influence the inlining heuristics in some significant
> way, then is there some way to get (1) without (2) being forced upon
> you?
>
> (Oh, and please point out if I lied anywhere. :)
>
> Cheers,
> Ulf
I guess you may place the function in the common section so that both
instances can get coalesced.
Still, that's not something I'd encourage you to do.



More information about the Gcc-help mailing list