Summary: The core.atomic module does not have implementations
                    when compiling with -D.
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: druntime

--- Comment #0 from Kapps <> 2012-02-16 17:25:43 PST ---
Most methods in core.atomic are versioned out with a stub method replacing them
when generating documentation. If you attempt to use something like atomicOp
for example, it will still compile but do nothing and always return T.init
(leading to quite a bit of confusion). If you try to use cas, you get a symbol
undefined, as the actual implementation is excluded when version(D_Doc) is set.

Test case:

module Test;
import std.stdio;
import core.atomic;

void main() {    
    int* a = new int();
    *a = 2;
    int* b = new int();
    *b = 1;    
    bool Result = cas(cast(shared)&a, cast(shared)a, cast(shared)b);    
    writeln(Result, ": ", *a, ", ", *b);

Compile with 'dmd test.d' and it runs and prints "true: 1, 1". Compile with
'dmd test.d -D' and it will fail to link with "Error 42: Symbol Undefined

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

Reply via email to