http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258
--- Comment #3 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> 2011-11-22 15:05:13 UTC --- > --- Comment #1 from Andrew Macleod <amacleod at redhat dot com> 2011-11-21 > 19:21:30 UTC --- > 32 bit targets don't usually support 128 bit atomic operations natively, and > leave calls to be resolved by an external atomic library. There was some > issue with X32 support where 32 bit could support it under some circumstances. > > Now gcc/testsuite/lib/target-supports.exp defines the testsuite check for > whether 128 bit is supported as: > > proc check_effective_target_sync_int_128 { } { > if { ([istarget x86_64-*-*] || [istarget i?86-*-*]) > && ![is-effective-target ia32] } { > return 1 > } else { > return 0 > } > } > > I presume if 32 bit solaris isn't supporting 128 bit operations then this > needs > to be tweaked... There's nothing Solaris-specific here, as I'm seeing the same issue on a bi-arch i386-apple-darwin9.8.0 compiler for the 64-bit multilib. It seems the 32-bit compiler doesn't generate the 128-bit atomic insns when generating 64-bit code. Rainer