[Issue 17454] ABI non-conformity: produces unaligned placement of struct on stack

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Mon May 29 23:48:27 PDT 2017


https://issues.dlang.org/show_bug.cgi?id=17454

--- Comment #2 from Walter Bright <bugzilla at digitalmars.com> ---
> d_fun returns a struct by value which appears by looking at the disassembly that d_fun allocates room for the result value on it's stack, and then returns a pointer to the result in RAX.

D never does that, because then d_fun() would be returning a pointer into its
own stack, which has expired and hence is a big no-no.

What does happen is d_fun()'s caller allocates S, and then passes a pointer to
S to d_fun(), and d_fun() fills it in and returns that pointer to S.

But if S fits in a register, this does not happen, as the disassembly shows.

--


More information about the Digitalmars-d-bugs mailing list