is this an instance of the 16-byte struct bug

deadalnix deadalnix at gmail.com
Mon Nov 4 15:07:25 PST 2013


On Monday, 4 November 2013 at 22:56:48 UTC, jerro wrote:
>> Then it look like a dmd backend bug. Can you post the 
>> generated assembly ?
>
> 000000000043050c <_Dmain>:
>    43050c:       push   %rbp
>    43050d:       mov    %rsp,%rbp
>    430510:       sub    $0x40,%rsp
>    430514:       movabs $0x3ff0000000000000,%rax
>    43051b:
>    43051e:       mov    %rax,-0x40(%rbp)
>    430522:       movsd  -0x40(%rbp),%xmm0
>    430527:       rex.W movsd %xmm0,-0x30(%rbp)
>    43052d:       xor    %edx,%edx
>    43052f:       mov    %rax,-0x10(%rbp)
>    430533:       mov    %rdx,-0x8(%rbp)
>    430537:       mov    %rax,-0x28(%rbp)
>    43053b:       mov    %rdx,-0x20(%rbp)

>    43053f:       mov    0x28022(%rip),%rdx
>    430546:       mov    0x28013(%rip),%rsi

What are these ? What are they referering to ?

>    43054d:       mov    -0x28(%rbp),%rdi
>    430551:       callq  430874 <void
> std.stdio.writefln!(immutable(char)[],
> ulong).writefln(immutable(char)[], ulong)>
>    430556:       xor    %eax,%eax
>    430558:       leaveq
>    430559:       retq

This calls writefln, this is not what your code does just above. 
Are you sure you are posting the right assembly ? Do you use the 
inline flag ?


More information about the Digitalmars-d mailing list