www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 16651] New: atomicOp!"-="(ulong, uint) = wrong result/codegen

https://issues.dlang.org/show_bug.cgi?id=16651

          Issue ID: 16651
           Summary: atomicOp!"-="(ulong, uint) = wrong result/codegen
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Windows
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: 2krnk gmx.net

wrong result/codegen for atomicOp!"-="(ulong, uint) using DMD -m64. tested on
win64 only, using DMD-2.071.2. problem does not occur with DMD -m32 or
ldc2-1.1.0-b3 -m64.

-----

version(DigitalMars)version(D_LP64){
    import std.stdio    : writeln;
    import core.atomic    : atomicOp;

    shared ulong foo = 2;
    uint bar = 1;
    atomicOp!"-="( foo, bar );
    writeln( "foo = ", foo );    // foo = 4294967297
}

--
Oct 30 2016