http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44217
Rainer Orth <ro at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011.01.11 13:49:30 Ever Confirmed|0 |1 --- Comment #2 from Rainer Orth <ro at gcc dot gnu.org> 2011-01-11 13:49:30 UTC --- Looking further, there's certainly a compiler problem here. In the assembler output for ibgomp.c/atomic-2.c, I see > grep cmpxchg atomic-2.s lock cmpxchgq %rcx, d(%rip) lock cmpxchg16b ld(%rip) The first variant can be assembled correctly by Sun as, while the second cannot. It seems that GCC is buggy/inconsistent here: while Sun as knows about cmpxchg8b, it normally requires cmpxchg{b,w,l,q}, and definitely cannot handle cmpxchg16b.