On Wed, May 09, 2012 at 11:06:09PM -0700, H. S. Teoh wrote: > Code (compile with dmd -m64): > import std.stdio; > struct S { > short[4] x; > this(short[4] args...) { > x[] = args[]; > } > bool opEquals(in S s) const { > for (auto i=0; i < 4; i++) { > if (this.x[i] != s.x[i]) > return false; > } > return true; > } > } > void main() { > assert(S(1,2,3,4) == S(1,2,3,4)); > } > > Output: the assertion in main fails. Inserting writeln's indicate that > the parameter s to opEquals is corrupted (has garbage values). Trying to > writeln either argument causes a segfault. > > Compiling with -m32 works no problem. > > Is this a known issue? [...]
Since nobody replied, I opened a new bug: http://d.puremagic.com/issues/show_bug.cgi?id=8079 It may be related to bug 5570 perhaps? In any case, this is a deal-breaker for me, as it makes 64-bit unusable with dmd. I have no choice but to go back to gdc, but my distro's gdc doesn't work with 2.059 phobos yet, and I need the new regex support. :-( T -- Tech-savvy: euphemism for nerdy.