[cfe-dev] always_inline and noinline attributes
eli.friedman at gmail.com
Tue Jul 22 08:11:26 PDT 2008
On Tue, Jul 22, 2008 at 12:08 AM, Matthijs Kooijman <matthijs at stdin.nl> wrote:
>> I'd strongly prefer to do this in the LLVM IR level instead of on clang
> That was the plan, AFAIU. Yet it would make sense to have clang do it at the
> end of its compilation (by running an inliner over the generated IR).
>> No, it should only happen within a translation unit. The semantics of the
>> program should not change based on whether you're using LTO or not, and
>> inlining can sometimes change semantics for (arguably very broken) uses.
> At the very least, I would make it an option whether to strip the
> always_inline info after compiling a single translation unit, so people can
> explicitely choose to still do (forced) inlining at link time.
Unless I'm mistaking the semantics of always_inline, it should be a
compile-time error to take the address of an always_inline function,
and always_inline functions shouldn't be exposed as external symbols.
Otherwise, it's impossible for the compiler to honor the
In any case, the issue isn't whether to do inlining with LTO, but
whether to force inlining with LTO.
More information about the cfe-dev