Re: [OMPI users] Solaris10/SPARC: atomic_cmpset_64 broken

2010-11-29 Thread George Bosilca
We're in process of analyzing this issue. I'll keep you updated.

  george.


On Nov 13, 2010, at 08:40 , Nicolai Stange wrote:

> Hi everybody,
> 
> gcc 4.5.1 with -O2 optimizes the 'ret = newval' away because %0 is
> declared as being write only.
> Fix is attached.
> 
> Regards
> 
> Nicolai
> <02_fix_atomic_cmpset_64.diff>___
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users




[OMPI users] Solaris10/SPARC: atomic_cmpset_64 broken

2010-11-13 Thread Nicolai Stange
Hi everybody,

gcc 4.5.1 with -O2 optimizes the 'ret = newval' away because %0 is
declared as being write only.
Fix is attached.

Regards

Nicolai
--- a/openmpi-1.4.3/opal/include/opal/sys/sparcv9/atomic.h	2009-12-08 21:36:02.0 +0100
+++ openmpi-1.4.3/opal/include/opal/sys/sparcv9/atomic.h	2010-11-12 21:20:28.356657500 +0100
@@ -159,7 +159,7 @@
"ldx %2, %%g2   \n\t" /* g2 = oldval */
"casxa [%1] " ASI_P ", %%g2, %%g1 \n\t"
"stx %%g1, %0   \n"
-   : "=m"(ret)
+   : "+m"(ret)
: "r"(addr), "m"(oldval)
: "%g1", "%g2"
);