[Issue 6234] New: 64-bit array append generates inline code to copy new data, but does not call postblit
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jul 1 05:43:13 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6234
Summary: 64-bit array append generates inline code to copy new
data, but does not call postblit
Product: D
Version: D2
Platform: x86_64
OS/Version: All
Status: NEW
Severity: major
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: schveiguy at yahoo.com
--- Comment #0 from Steven Schveighoffer <schveiguy at yahoo.com> 2011-07-01 05:38:11 PDT ---
The 64-bit compiler no longer calls _d_arrayappendT directly, it now calls
_d_arrayappendCTX, which does *not* copy the new data to the array.
This is fine, because the compiler generates the necessary code to copy the new
data. However, the compiler does *not* call postblit on that data.
Two ways to fix this:
1. Simply switch to calling _d_arrayappendT again, and don't do the copying
inline.
2. Insert a call to __doPostblit (or whatever you want to rename it, it's in
rt/lifetime.d) after copying the data, but only if the type *has* a valid
postblit.
This is the reason the runtime is currently failing unit tests on 64-bit code.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list