[PATCH] D55659: [Sema][ObjC] Disallow non-trivial C struct fields in unions
    John McCall via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Thu Feb  7 10:37:02 PST 2019
    
    
  
rjmccall accepted this revision.
rjmccall added a comment.
This revision is now accepted and ready to land.
Two minor tweaks, but otherwise LGTM.
================
Comment at: lib/AST/Type.cpp:2273
+    const RecordDecl *RD = QT->castAs<RecordType>()->getDecl();
+    // C++ classes are ignored.
+    if (isa<CXXRecordDecl>(RD))
----------------
Might be good to spell this out: we don't want to apply the C restriction in C++ because C++ (1) can apply the restriction at a finer grain by banning copying/destroying the union and (2) allows users to override these restrictions by declaring explicit constructors/etc., which we're not proposing to add to C.
================
Comment at: test/SemaObjC/arc-decls.m:24
+
+union  u_trivial_c {
+  volatile int b;
----------------
spacing
Repository:
  rC Clang
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55659/new/
https://reviews.llvm.org/D55659
    
    
More information about the cfe-commits
mailing list