aaron.ballman added a comment. In https://reviews.llvm.org/D46112#1091981, @efriedma wrote:
> I think the request was that we check that a type is trivially copyable when > we perform an atomic operation? I don't see the code for that anywhere. Sorry about that -- I didn't notice that GNU was handled while C11 was not. That's been updated now. > Also needs some test coverage for atomic operations which aren't calls, like > "typedef struct S S; void f(_Atomic S *s, _Atomic S *s2) { *s = *s2; };". Thank you for pointing this out -- that uncovered an issue where we were not properly diagnosing the types as being incomplete. I've added a new test case and rolled the contents of Sema\atomic-type.cpp (which I added in an earlier patch) into SemaCXX\atomic-type.cpp (which already existed and I missed it). I believe the change I made to `Type::isIncompleteType()` is correct, but was surprised by the new behavior in SemaCXX/atomic-type.cpp that resulted. It appears that the `RecordDecl` for "struct inner" has `IsCompleteDefinition` set to `false` while instantiating `struct atomic`, but I'm not familiar enough with the template instantiation process to know whether this is reasonable or not. https://reviews.llvm.org/D46112 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits