[LLVMdev] inlining hint

Dan Gohman gohman at apple.com
Wed Aug 26 11:18:02 PDT 2009


On Aug 26, 2009, at 10:59 AM, Dale Johannesen wrote:


> You may have noticed I added an "inlinehint" attribute to the IR
> yesterday, to represent user declarations that hint inlining would be
> a good idea ("inline" keyword).  Chris and I have been discussing how
> to hook it up to the C++ FE.  Consider:
>
> class X {
>    int A(int x) {....}
>    inline int B(int x);
> };
> inline int X::B(int x) {...}
>
> Per the language standard, A and B are semantically identical, both
> "inline".  It's been suggested that we should omit the inlinehint on
> A, on the grounds that many C++ programmers do not know this, and
> therefore misuse the construct.   I want to get some other views on
> this.  Do you think it's a good idea?
> (For those of you who consider yourselves C++ programmers - and not FE
> language lawyers, who are supposed to know what the standard says -
> did you know this?)

I recommend following the C++ standard here. Just as there are codebases
where the inline keyword is added to function definitions inside
class bodies with the intent to be meaningful, there are also codebases
where the inline keyword is omitted as redundant. LLVM itself is one
of the latter, for the most part.

For this reason, I'm actually somewhat surprised that you're adding
this hint, because you'll still need heuristics to find functions to
inline that aren't hinted, and to ignore hints on functions which
aren't good candidates. Are you aiming to create inlining heuristics
modeled after those of another compiler? If so, should the answer be
"whatever that other compiler does?"

Dan




More information about the llvm-dev mailing list