On Fri, 17 Jun 2011 18:52:05 -0400, Timon Gehr <timon.g...@gmx.ch> wrote:
Steven Schveighoffer wrote:
https://github.com/D-Programming-Language/druntime/pull/29
See if that helps. On my system, your code now results in your expected
output.
-Steve
If the compiler optimizes well enough the output given could be valid
(it might
construct the struct directly where it belongs). This needs some
investigation.
Anyways, is druntime the correct place to fix this? If it _is_ a bug,
isn't it a
compiler bug and not a bug in druntime? After a quick glimpse over your
patch I
think the output will never be just "done" now.
The patch is still necessary in cases where the value being appended is
not a temporary. For example, if in the OP's code the test variable was
used after appending it to the array.
Michel Fortin also brought up the point in a comment on the pull request.
But the reality is, druntime cannot do any better without help from the
compiler (the runtime needs to be told when to refrain from running a
postblit). It's a separate bug.
However, I think there is nothing invalid with doing both the postblit and
the destructor on the temporary. So at least the code is correctly
calling the postblit.
-Steve