DMD version: 2.063.2 Code: http://pastebin.com/sTLhnNdV Output: CTor A with 42 CTor A with 23 CTor A with 65 Value call with A::65 DTor A with 65 CTor A with 1337 Value call with A::1337 DTor A with 1337 Ref call with A::42 DTor A with 23 DTor A with 42 Disassembly: http://pastebin.com/5emmwqJc Compilation flags: -release -O Issue: The first two value calls receive their arguments via move semantics, i.e. the argument is not copied but passed directly to the function. This behavior is showed in the output (the postblit function is not called) but the disassembly shows that the struct is actually copied before the function call.
If that is fixed, there could be a huge performance boost.
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18674 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB