Request: Implement constant folding for .dup

Don Clugston dac at nospam.com.au
Wed Feb 21 03:23:32 PST 2007


Frits van Bommel wrote:
> Don Clugston wrote:
>> Stewart Gordon wrote:
>>> Don Clugston Wrote:
>>>> Since COW is used so much in D, especially with strings, allowing 
>>>> "abc".dup to be constant-folded would greatly increase the amount of 
>>>> existing code which could be used at compile-time.
>>>
>>> What would the semantics be exactly?
>>
>> Just create a new const with the same value as the first one -- all 
>> compile-time consts have value semantics.
>>
>> ie,
>> char [] a = "xyz";
>> char [] b = a.dup;
>>
>> would be the same as
>> char [] a = "xyz";
>> char [] b = "xyz";
> 
> I see no problem with allowing this in compile-time functions. However, 
> I can't think of any situation in which this would actually be useful. 
> Since compile-time functions aren't allowed to use non-const arrays, 
> they aren't allowed to modify elements of any arrays they have access 
> to, right? So why would they need .dup?

Yes, .dup is useless at compile time. But sometimes you have runtime 
code that contains things like:

char [] s;
:
return s.dup;

With .dup allowable, that existing code can be used at compile time.



More information about the Digitalmars-d mailing list