On Thursday, 29 November 2012 at 07:59:02 UTC, Maxim Fomin wrote:

This doesn't look like assembly for previous source. Please provide the source for which you have assembly and tell which dmd options do you use.

Well, I'm using the latest dmd (from the trunk), phobos, druntime, so I could build and step through.

rdmd -version=bug --force --build-only -g -w -property -I/home/dbdavidson/stage/vibe.d/source -I/home/dbdavidson/plusauri/dlang -L-levent_pthreads -L-levent -L-lssl -L-lcrypto /home/dbdavidson/tmp/again.d

dmd -v
DMD v2.061 DEBUG
DMD64 D Compiler v2.061

-----------------------
import core.stdc.stdio : printf;

struct S {
  long x = 42;
  version(bug) {
    void opAssign(S rhs)
    {
      printf("Assign %d\n", this.x);
    }
  }
}

//alias RefCounted!(int) Foo;
alias S Foo;
Foo[int] map;

void main() {
  map[3] = Foo();
  printf("%d\n", map[3].x);
}

------------------------

(gdb) disass
Dump of assembler code for function _Dmain:
   0x000000000041a630 <+0>:       push   %rbp
   0x000000000041a631 <+1>:       mov    %rsp,%rbp
   0x000000000041a634 <+4>:       sub    $0x38,%rsp
   0x000000000041a638 <+8>:       push   %rbx
=> 0x000000000041a639 <+9>:    mov    $0x3,%eax
   0x000000000041a63e <+14>:      mov    %eax,-0x30(%rbp)
   0x000000000041a641 <+17>:      lea    -0x30(%rbp),%rcx
   0x000000000041a645 <+21>:      movabs $0x8,%rdx
   0x000000000041a64f <+31>:      movabs $0x43cc10,%rsi
   0x000000000041a659 <+41>:      mov    %fs:0x0,%rdi
0x000000000041a662 <+50>: add 0x229957(%rip),%rdi # 0x643fc0
   0x000000000041a669 <+57>:      callq  0x41ae84 <_aaGetX>
   0x000000000041a66e <+62>:      mov    %rax,-0x28(%rbp)
   0x000000000041a672 <+66>:      test   %rax,%rax
   0x000000000041a675 <+69>:      jne    0x41a681 <_Dmain+81>
   0x000000000041a677 <+71>:      mov    $0x12,%edi
   0x000000000041a67c <+76>:      callq  0x41a710 <_D5again7__arrayZ>
   0x000000000041a681 <+81>:      movabs $0x2a,%rax
   0x000000000041a68b <+91>:      mov    %rax,-0x18(%rbp)
   0x000000000041a68f <+95>:      mov    %rax,%rsi
   0x000000000041a692 <+98>:      lea    -0x20(%rbp),%rdi
0x000000000041a696 <+102>: callq 0x41a5c8 <_D5again1S8opAssignMFS5again1SZv>
   0x000000000041a69b <+107>:     mov    -0x20(%rbp),%rcx
   0x000000000041a69f <+111>:     mov    -0x28(%rbp),%rdx
   0x000000000041a6a3 <+115>:     mov    %rcx,(%rdx)

Reply via email to