gdc or ldc for faster programs?

Iain Buclaw ibuclaw at gdcproject.org
Fri Jan 28 18:02:27 UTC 2022


On Thursday, 27 January 2022 at 20:28:40 UTC, Siarhei Siamashka 
wrote:
> On Thursday, 27 January 2022 at 18:12:18 UTC, Johan Engelen 
> wrote:
>> But the language requires ODR, so we can emit templates as 
>> weak_odr, telling the optimizer and linker that the symbols 
>> should be merged _and_ that ODR can be assumed to hold (i.e. 
>> inlining is OK).
>
> Thanks! This was also my impression. But the problem is that 
> Iain Buclaw seems to disagree with us. He claims that template 
> functions must be overridable by global functions and this is 
> supposed to inhibit template functions inlining. Is there any 
> independent source to back up your or Iain's claim?
>

For example, druntime depends on this behaviour.

Template: 
https://github.com/dlang/druntime/blob/a0ad8c42c15942faeeafb016e81a360113ae1b6b/src/rt/config.d#L46-L58

Regular symbol: 
https://github.com/dlang/druntime/blob/a17bb23b418405e1ce8e4a317651039758013f39/test/config/src/test19433.d#L1

If we can rely on instantiated symbols to not violate ODR, then 
you would be able to put symbols in the .link-once section.  
However all duplicates must also be in the .link-once section, 
else you'll get duplicate definition errors.


More information about the Digitalmars-d-learn mailing list