Am 10.03.2013 07:20, schrieb Walter Bright:

On 3/9/2013 2:18 AM, Johannes Pfau wrote:
Am 08.03.2013 19:54, schrieb Walter Bright:

On 3/8/2013 4:40 AM, Johannes Pfau wrote:

So please explain what's illegal in this concrete example #2.

If it lives in a register, then exception handling recovery won't work on it.
It only lives in the register for a very short time though.

What's the point, then? The compiler will cache fields in registers anyway.
The point is passing it in a register should be faster than passing it on the stack or even passing by reference.

However, thinking about it I found another issue which shows that we have to pass non-PODs (at least those with destructors) by reference. I filed a bug report for dmd here:

http://d.puremagic.com/issues/show_bug.cgi?id=9704

I also filed a bug report for gdc. Fixing will have to wait till the above bug is fixed though cause the fix may need frontend changes and without the above fix non-PODs can't be implemented in gdc because of gcc-specific details.
http://gdcproject.org/bugzilla/show_bug.cgi?id=42

--
Johannes Pfau

_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals

Reply via email to