DIP56 - inlining

Paulo Pinto via Digitalmars-d digitalmars-d at puremagic.com
Thu Feb 5 08:32:26 PST 2015


On Wednesday, 4 February 2015 at 21:05:59 UTC, Zach the Mystic 
wrote:
> On Wednesday, 4 February 2015 at 20:09:04 UTC, Walter Bright 
> wrote:
>> On 2/4/2015 8:29 AM, Andrei Alexandrescu wrote:
>>> On 2/4/15 4:02 AM, Walter Bright wrote:
>>>> On 2/4/2015 1:39 AM, ponce wrote:
>>>>> Would pragma(inline, <bool-expr>) be supported though?
>>>> Yes. That's what I intended, sorry the wording wasn't clear.
>>> Please nail it down in the doc so it doesn't get neglected. 
>>> -- Andrei
>>
>> Reading the DIP again,
>>
>> "This adds a pragma 'inline', which is followed by an optional 
>> boolean expression, which influences the inlining of the 
>> function it appears in. An evaluation of 'true' means always 
>> inline, 'false' means never inline, and no argument means the 
>> default behavior."
>>
>> Seems clear enough.
>
> Also, the "Rationale" seems outdated now too. Currently: 
> "Sometimes generating better code requires runtime profile 
> information. But being a static compiler, not a JIT, the 
> compiler could use such hints from the programmer."
>
> I would change that rationale to this one (feel free to confirm 
> and/or copy): "Programmers will sometimes want precise control 
> of the compiler's inlining behavior, either to improve 
> performance in debug builds, or to be completely sure that a 
> function is inlined, or to ensure access to the function's 
> runtime profiling information by not inlining it. This DIP 
> addresses those needs. Warning: Careless forcing of inlining 
> can decrease performance dramatically. Use with caution."
>
> Also, speaking of hints to the compiler:
>
> pragma(hotcodepath, true/false);
>
> ... seems really interesting to me, although that's clearly the 
> subject for a different DIP. I just wanted to emphasize that 
> the current DIP is not meant to address that feature.


Profile guided optimizations would also be an option I guess.

--
Paulo


More information about the Digitalmars-d mailing list