On Fri, May 23, 2014 at 01:54:47PM -0500, Peter Bergner wrote: > On Fri, 2014-05-23 at 11:47 -0500, Peter Bergner wrote: > > The following patch gets bootstrap working again, but there seems to > > be a large number of testsuite failures I will look into before > > submitting the patch to the LLVM mailing list. > > FYI, it looks like a huge number of the failures are from the following > in 32-bit mode: > > /home/bergner/gcc/build/gcc-fsf-mainline-asan-debug/powerpc64-linux/32/libsanitizer/asan/.libs/libasan.so: > undefined reference to `__sync_fetch_and_add_8'^M > collect2: error: ld returned 1 exit status^M > > Kosta, we don't have a __sync_fetch_and_add_8 in 32-bit, since > we don't have the necessary hardware instructions to do a 64-bit > fetch and add. How is this supposed to work? There are some > libatomic routines we could call (eg, __atomic_fetch_add_8).
But libatomic in the end for that cases uses locking and non-atomic access anyway. On i?86 64-bit atomics are available starting with i586, on sparc starting with v9, but I believe on most architectures if you have atomics at all you don't have atomics larger than word size. For GCC, if you want in the preprocessor to test if a CPU has 64-bit atomics, you'd check #ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 Can you use locking instead otherwise? Jakub