rjmccall added a comment.

Can this attribute not be applied to a base class, or to a type?  I think every 
time I've seen someone get bitten by the unique-address rule, it was because 
they had a base class that deleted some constructors (or something like that) 
and which was a base of a million different types; I'm sure the language model 
they'd prefer would be to just add an attribute to that one type instead of 
chasing down every place where they declared a field of the type.



================
Comment at: include/clang/Basic/Attr.td:345
+  let CXXABIs = ["GenericItanium", "GenericARM", "iOS", "iOS64", "WatchOS",
+                 "GenericAArch64", "GenericMIPS", "WebAssembly"];
+}
----------------
Can you just duplicate the thing that Slava Pestov recently did for LangOpts?  
The tblgen enhancement really isn't very complicated, and I think we can agree 
that this is terrible. :)

We can probably kill the need for `CXXABIs` in tblgen entirely.


================
Comment at: include/clang/Basic/AttrDocs.td:1020
+point within the class (except that it does not share a vptr with the enclosing
+object).
+  }];
----------------
Can you include an example here?  And should this documentation mention that 
this is a standard C++ attribute (or at least one proposed for adoption)?


================
Comment at: lib/AST/Decl.cpp:3937
+  //     -- [has] virtual member functions or virtual base classes, or
+  //     -- has subobjects of nonzero size or bit-fields of nonzero length
+  if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
----------------
Surely a bit-field of nonzero length is a subobject of nonzero size.


================
Comment at: lib/AST/Decl.cpp:3945
+        return false;
+  }
+
----------------
Is this a C/C++ modules interaction?


================
Comment at: lib/CodeGen/CGExprAgg.cpp:1850
+AggValueSlot::Overlap_t
+CodeGenFunction::overlapForFieldInit(const FieldDecl *FD) {
+  if (!FD->hasAttr<NoUniqueAddressAttr>() || !FD->getType()->isRecordType())
----------------
`getOverlapForFieldInit`?  `overlap` is a verb.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63451/new/

https://reviews.llvm.org/D63451



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to