DIP56 - inlining
Zach the Mystic via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 4 13:05:58 PST 2015
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.
More information about the Digitalmars-d
mailing list