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.

Reply via email to