TypeInfo in the library

Dicebot public at dicebot.lv
Mon Feb 17 11:42:18 PST 2014


On Monday, 17 February 2014 at 16:01:50 UTC, Kenji Hara wrote:
> - Immediately called lambdas
>
>   enum x = (){ return some_sort_ctfe_calculartions; };   // 
> lambda codegen
> is unnecessary.

True but this is only one of many cases.

> - modue private functions
>
>   module a;
>   private string foo() { ... }
>   enum x = foo();
>   // Compiler can elide codegen for 'foo', if other declarations
>   // in module a don't use it for runtime code.

It is not that simple. Other declarations can also be templates 
or CTFE functions (but public) - compiler can't know if those 
will be used in runtime codegen in other modules. And being 
conservative will make optimization much less useful.

This is exactly why I am referencing WPO/LTO - doing this is 
plain optimization is theoretically possible but is huge effort 
to implement in somewhat reliable way. I'd like to have something 
simple that can help right now and turned into no-op later once 
compiler becomes clever enough.


More information about the Digitalmars-d mailing list