# HG changeset patch # User Christian Kamm # Date 1222015287 -7200 # Node ID c60e122f4adad805f97ac78b7ef3faf104633779 # Parent 452e6e2618bfee1ff398c0255046bfb10c927775 Fix atomicIncr and atomicDecr. Probably. The unittest for tango.core.Atomic now passes. diff -r 452e6e2618bf -r c60e122f4ada runtime/llvmdc.diff --- a/runtime/llvmdc.diff Sun Sep 21 17:35:27 2008 +0200 +++ b/runtime/llvmdc.diff Sun Sep 21 18:41:27 2008 +0200 @@ -248,7 +248,7 @@ =================================================================== --- tango/core/Atomic.d (revision 3939) +++ tango/core/Atomic.d (working copy) -@@ -270,6 +270,173 @@ +@@ -270,6 +270,167 @@ //////////////////////////////////////////////////////////////////////////////// @@ -373,16 +373,13 @@ + { + static if (isPointerType!(T)) + { -+ return cast(T)llvm_atomic_load_add!(size_t)(cast(size_t*)&val, 1); ++ llvm_atomic_load_add!(size_t)(cast(size_t*)&val, 1); + } -+ else static if (is(T == bool)) -+ { -+ return llvm_atomic_load_add!(ubyte)(cast(ubyte*)&val, 1)?1:0; -+ } + else + { -+ return llvm_atomic_load_add!(T)(&val, cast(T)1); ++ llvm_atomic_load_add!(T)(&val, cast(T)1); + } ++ return val; + } + } + @@ -404,16 +401,13 @@ + { + static if (isPointerType!(T)) + { -+ return cast(T)llvm_atomic_load_sub!(size_t)(cast(size_t*)&val, 1); ++ llvm_atomic_load_sub!(size_t)(cast(size_t*)&val, 1); + } -+ else static if (is(T == bool)) -+ { -+ return llvm_atomic_load_sub!(ubyte)(cast(ubyte*)&val, 1)?1:0; -+ } + else + { -+ return llvm_atomic_load_sub!(T)(&val, cast(T)1); ++ llvm_atomic_load_sub!(T)(&val, cast(T)1); + } ++ return val; + } + } +}