new should lower to a template function call

Petar Petar
Thu Jul 23 06:13:52 UTC 2020


On Thursday, 23 July 2020 at 05:12:30 UTC, Walter Bright wrote:
> On 7/22/2020 6:05 PM, Adam D. Ruppe wrote:
>> 2) the compiler should be free to cheat a little for 
>> optimization; if it can see the var never escapes, it might 
>> even still pop it on the stack (perhaps the function receives 
>> a pointer to the memory and if null, it is responsible for 
>> allocing it). This may not be implemented but the spec should 
>> at least be written to allow it later. This kind of 
>> optimization can be a real winner with scope too.
>
> The compiler already does this if the variable being new`d is 
> `scope`.

LDC has an optimization pass [1] which promotes heap allocations 
to stack allocations, without  the user having to manually use 
the `scope` storage class for function-local variables.
Do you think we could formalize this optimization and move it up 
the pipeline into the front-end, so that it's guaranteed to be 
performed by all 3 compilers?

[1]: 
https://github.com/ldc-developers/ldc/blob/v1.23.0-beta1/gen/passes/GarbageCollect2Stack.cpp


More information about the Digitalmars-d mailing list