jfb added a comment. In https://reviews.llvm.org/D51084#1216913, @rjmccall wrote:
> It says the type of the assignment expression, not the type of the LHS. > > C11 [6.5.16]p2: "The type of an assignment expression is the type the left > operand would have after lvalue conversion." > > C11 [6.3.2.1]p2: "...this is called lvalue conversion. If the lvalue has > qualified type, the value has the unqualified version of the type of the > lvalue; additionally, if the lvalue has atomic type, the value has the > non-atomic version of the type of the lvalue; otherwise, the value has the > type of the lvalue." > > The RHS is not converted to have atomic type. Right that would be nonsensical because you'd need to load it atomically. The C `_Atomic` semantics match what C++ `std::atomic` does: _Atomic(int) atom; void ass(int i) { atom = i; } is the same as: #include <atomic> std::atomic<int> atom; void ass(int i) { atom = i; } They're meant to be interchangeable. This warning is meant to warn on C's implicit `seq_cst`. When I get to writing the C++ version of the warning I'll warn about C++'s implicit `seq_cst`. Repository: rC Clang https://reviews.llvm.org/D51084 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits