Speed up compilation of CTFE-heavy programs with this One Weird Trick!

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Thu Nov 3 06:04:06 PDT 2016


On 2016-11-03 04:43, Vladimir Panteleev wrote:

> As it turns out, DMD will codegen all functions, even templated ones
> when they're instantiated, whether they're called by something or not.
> With metaprogramming-heavy code, it's easy to run into some optimizer
> performance corner cases, however this may make an impact regardless.

I guess the compiler assumes that a function can end up in a library and 
be called by some other program. Sounds like a whole program 
analysis/optimization would be required. Or if the compiler is invoked 
as building an executable it can assume it can avoid generating code for 
unused functions?

To me it sounds like a @ctfe attribute would be useful. The compiler 
could enforce that functions annotated with @ctfe will only contain code 
that can be CTFE-able, can only be called in a CTFE context and will not 
generate any code.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list