Why C++ compiles slowly

Simen kjaeraas simen.kjaras at gmail.com
Tue Aug 24 15:00:30 PDT 2010


On Tue, 24 Aug 2010 23:53:44 +0200, Jonathan M Davis  
<jmdavisprog at gmail.com> wrote:

> On Tuesday, August 24, 2010 14:37:09 bearophile wrote:
>> Steven Schveighoffer:
>> > For example, foo(HashSet!int hs) inside the module testme becomes:
>> > _D6testme3fooFC12dcollections7HashSet14__T7HashSetTiZ7HashSetZv
>>
>> And I think some more things needs to be added to that string, like a
>> representation for the pure attribute, etc.
>>
>> Bye,
>> bearophile
>
> They probably aren't there because
>
> 1. They have nothing to do with overrideability.
>
> 2. They have nothing to do with C linking.
>
> Presumably, dmd deals with those attributes at the appropriate time and  
> then
> doesn't bother putting them in the symbol table because they're not  
> relevant any
> more (or if they are relevant, it has other ways of getting at them). If  
> they
> were actually necessary in the symbol name, they'd be there. If they  
> aren't
> necessary, why bother putting them in there, making the symbol names even
> longer?

Pure might be worth stuffing in the symbol name, as the compiler may
optimize things differently for pure vs. non-pure(dirty?) code.
E.g. the result of a large, pure function that takes a while to compute
might be cached to prevent calling it twice.

-- 
Simen


More information about the Digitalmars-d mailing list