On Tuesday, 27 March 2018 at 23:35:44 UTC, kinke wrote:
On Tuesday, 27 March 2018 at 21:52:25 UTC, Rubn wrote:
It happens with LDC too, not sure how it would be able to know
to do any kind of optimization like that unless it was able to
inline every single function called into one function and be
able to do optimize it from there. I don't imagine that'll be
likely though.
It does it in your code sample with `-O`, there's no call to
bar and the foo() by-value arg is memcpy'd to the global.
For reference: https://run.dlang.io/is/2vDEXP
Note that main() boils down to a `memset(&gfoo, 10, 1024); return
0;`:
_Dmain:
.cfi_startproc
pushq %rax
.Lcfi0:
.cfi_def_cfa_offset 16
data16
leaq onlineapp.Foo onlineapp.gfoo@TLSGD(%rip), %rdi
data16
data16
rex64
callq __tls_get_addr@PLT
movl $10, %esi
movl $1024, %edx
movq %rax, %rdi
callq memset@PLT
xorl %eax, %eax
popq %rcx
retq