[dmd-internals] Is there a reason that inlining happens so early?

Brad Roberts braddr at puremagic.com
Tue Nov 27 01:44:13 PST 2012


On 11/27/2012 1:00 AM, Don Clugston wrote:
> One of the main reasons that implementing CTFE is difficult, is that
> inlining happens so early.
> It sometimes happens that CTFE gets run on a function BEFORE it is
> inlined, and then the same function gets run again AFTER inlining.
> Then the same function has a different number of variables, and all
> kinds of evil transformations. This makes it very difficult to
> pre-anaylze CTFE functions, before running them. (I've done
> experiments which show that a minimal "compile" which merely allocates
> variable numbers, can significantly increase CTFE speed).
> 
> Is there any reason why all the inlining couldn't be done after the
> semantic3 pass has completed, instead of happening within it?

I've heard Walter say that inlining is done in the front end so that other users of the backend can benefit from it.
Ironically, I don't believe that any of the users (other than dmd) of the frontend use the inliner that's in the
frontend, unless something's changed.




More information about the dmd-internals mailing list