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.000000000 +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" );