dim added a comment. In https://reviews.llvm.org/D28213#666269, @dim wrote:
> In https://reviews.llvm.org/D28213#666196, @mgorny wrote: > > > > ... >> What's the value of `__atomic_always_lock_free(sizeof(long long), 0)` for >> gcc and clang? > > For gcc, it is always 0, for clang (I tested 3.4.1 through 4.0.0) it is > always 1. Maybe that was always incorrect on 32-bit FreeBSD, then? Hmm, I just noticed the following rather disappointing comment in `tools/clang/lib/Basic/Targets.cpp`: X86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : X86TargetInfo(Triple, Opts) { [...] // x86-32 has atomics up to 8 bytes // FIXME: Check that we actually have cmpxchg8b before setting // MaxAtomicInlineWidth. (cmpxchg8b is an i586 instruction.) MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; So this can never have worked properly for e.g. i486 and i586... Repository: rL LLVM https://reviews.llvm.org/D28213 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits