[Bug d/94609] FAIL: gdc.dg/runnable.d

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed Apr 15 20:25:03 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94609

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
LP64 has:

(gdb) disass _D8runnable6test52FZv
Dump of assembler code for function _D8runnable6test52FZv:
   0x000000000040943a <+0>:     push   %rbp
   0x000000000040943b <+1>:     mov    %rsp,%rbp
   0x000000000040943e <+4>:     push   %r13
   0x0000000000409440 <+6>:     push   %r12
   0x0000000000409442 <+8>:     push   %rbx
   0x0000000000409443 <+9>:     sub    $0x28,%rsp
   0x0000000000409447 <+13>:    lea    -0x40(%rbp),%rax
   0x000000000040944b <+17>:    mov    %rax,%rdi
   0x000000000040944e <+20>:    callq  0x409326
<_D8runnable7test52aFZS8runnable7test52aFZ6Scoped>

The argument is passed in RDI.  But x32 has

Dump of assembler code for function _D8runnable6test52FZv:
   0x00407a33 <+0>:     push   %rbp
   0x00407a34 <+1>:     mov    %esp,%ebp
   0x00407a36 <+3>:     push   %rbx
   0x00407a37 <+4>:     sub    $0x18,%esp
   0x00407a3a <+7>:     callq  0x4078f0
<_D8runnable7test52aFZS8runnable7test52aFZ6Scoped>

RDI/EDI isn't used to pass argument.  Is this done on purpose?  Where does
D frontend decide how to pass argument?


More information about the Gcc-bugs mailing list