www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ldc - LDC generate assembly unused instructions.

reply SrMordred <patric.dexheimer gmail.com> writes:
(disclaimer: i'm a compiler noob)

https://godbolt.org/g/9QS3j4

Why LDC keep unused assembly code like
'example.Int.__mixin2.toHash' or 'example.Int.__mixin2.opBinary'
on the binary?
Apr 02 2018
parent reply "David Nadlinger" <code klickverbot.at> writes:
On 2 Apr 2018, at 17:36, SrMordred via digitalmars-d-ldc wrote:
 Why LDC keep unused assembly code like
 'example.Int.__mixin2.toHash' or 'example.Int.__mixin2.opBinary'
 on the binary?
In short, there is no way for the compiler to know whether they might be used from another module (object file). They should disappear in the final executable on Linux (and I believe also Windows), though, if the linker does its job (--gc-sections). —David
Apr 02 2018
parent SrMordred <patric.dexheimer gmail.com> writes:
On Monday, 2 April 2018 at 16:47:16 UTC, David Nadlinger wrote:
 On 2 Apr 2018, at 17:36, SrMordred via digitalmars-d-ldc wrote:
 Why LDC keep unused assembly code like
 'example.Int.__mixin2.toHash' or 
 'example.Int.__mixin2.opBinary'
 on the binary?
In short, there is no way for the compiler to know whether they might be used from another module (object file). They should disappear in the final executable on Linux (and I believe also Windows), though, if the linker does its job (--gc-sections). —David
Nice, Thanks!
Apr 02 2018