jfb added a comment. In http://reviews.llvm.org/D17950#376349, @jyknight wrote:
> This conflicts with http://reviews.llvm.org/D17933. Most of this change also > seems unnecessary. > > - I think the `is_always_lock_free` function should be defined based on the > existing `__atomic_always_lock_free` builtin, not on defines (just like > is_lock_free uses `__atomic_is_lock_free`, or `__c11_atomic_is_lock_free`, > which is effectively an alias). > - Then, the new `__GCC_ATOMIC_DOUBLE_LOCK_FREE` macros are unnecessary, > unless we need to actually define a `ATOMIC_DOUBLE_LOCK_FREE` macro. > - `__LLVM_ATOMIC_1_BYTES_LOCK_FREE` effectively duplicates > `__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1`, so aren't needed. Hmm, when I originally wrote the paper I though I'd tried that. Can't remember why I went the other way, let me try out `__atomic_always_lock_free`. That would indeed be much simpler as it would be a pure libc++ change., thanks for raising the issue. ================ Comment at: lib/Frontend/InitPreprocessor.cpp:305 @@ +304,3 @@ + if (TypeWidth == TypeAlign && (TypeWidth & (TypeWidth - 1)) == 0 && + TypeWidth <= InlineWidth) + return Always; ---------------- bcraig wrote: > On some targets (like Hexagon), 4-byte values are cheap to inline, but 1-byte > values are not. Clang is spotty about checking this, but > TargetInfo::hasBuiltinAtomic seems like the right function to ask, if you > have access to it. You're commenting on: ``` if (TypeWidth == TypeAlign && (TypeWidth & (TypeWidth - 1)) == 0 && TypeWidth <= InlineWidth) ``` ? Are you asking for a separate change, or for a change to my patch? http://reviews.llvm.org/D17950 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits