David Simcha <> changed:

           What    |Removed                     |Added
            Summary|atomicOp!"+=" hangs with    |core.atomic.atomicLoad
                   |floating point              |broken for floating point

--- Comment #1 from David Simcha <> 2010-10-04 12:42:16 PDT ---
I looked into this one a little.  The root cause is actually that atomicLoad is
broken for floating point values.  Floating point values are supposed to be
returned in floating point registers, not x86 registers.  Here's an example
demonstrating this issue.

import std.stdio;

void main() {
    double foo = 2;
    writeln(atomicLoad!(msync.raw)(foo)); // -nan

// Copy/paste core.atomic here and remove module declaration, since atomic load
is private.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to