[dmd-internals] What does POD imply for backends

Iain Buclaw ibuclaw at ubuntu.com
Sun Feb 17 13:50:47 PST 2013


On Feb 16, 2013 8:27 PM, "Walter Bright" <walter at digitalmars.com> wrote:
>
>
> On 2/16/2013 12:17 PM, Johannes Pfau wrote:
>>
>> Am 16.02.2013 21:06, schrieb Walter Bright:
>>>
>>> A non-POD cannot be in registers because its address gets taken for
constructors/destructors.
>>>
>>>
>> But creating temporary (bit) copies on the stack is still allowed for
non-PODs, right?
>
>
> No.
>
>
>>
>> Wouldn't it be legal to still pass non-PODs in registers when calling
functions and only copying them back to the stack if the address is needed?
As we pass structs by value anyway, how could this be problematic?
>>
>
> No, not allowed. Consider why there are copy constructors, and what they
do.

Just catching up to speed with this, would this be passed by value on the
stack or by reference?  (The latter would be easier, however the former
could probably be forced by adding some language hook to the backend in gdc
as a temporary workaround).

Thanks,
Iain.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-internals/attachments/20130217/ec40d9f3/attachment.html>


More information about the dmd-internals mailing list