missing HexString documentation

Ralph Doncaster nerdralph at github.com
Thu Feb 8 17:30:14 UTC 2018


On Thursday, 8 February 2018 at 17:06:55 UTC, H. S. Teoh wrote:
> On Thu, Feb 08, 2018 at 08:26:03AM -0500, Steven Schveighoffer 
> via Digitalmars-d wrote: [...]
>> The extra data in the object file comes from the inclusion of 
>> the hexStringImpl function, and from the template parameter 
>> (the symbol 
>> _D3std4conv__T9hexStringVAyaa8_6465616462656566ZQBiyAa is in 
>> there as well, which will always be larger than the actual 
>> string passed to hexString).
> [...]
>
> This is one area that really should be improved.  Is there some 
> easy way in the compiler to mark a template function as "only 
> used in CTFE", and not emit it into the object file if there 
> are no other runtime references to it?  I'm thinking of some 
> kind of boolean attribute that defaults to false, and gets set 
> if the function is referenced by runtime code.  During codegen, 
> any function that doesn't have this attribute set will be 
> skipped over.
>
> My speculation is that this would lead to a good amount of 
> reduction in template bloat, given how pervasively CTFE is used 
> in Phobos (and idiomatic D in general).

Or maybe you can get away with just using a good compiler/linker 
that supports LTO.  It's quite mature in GCC now, so it's 
probably worth trying with GDC.
http://hubicka.blogspot.ca/2014/04/linktime-optimization-in-gcc-1-brief.html



More information about the Digitalmars-d mailing list