aaron.ballman added a comment.

I'm worried about the extra overhead imposed on all users by this change. This 
appears to be adding another calling convention to Clang (despite the claim 
that it's not); can you share a motivation for why everyone should pay the 
price for adding it?



================
Comment at: clang/include/clang/AST/Type.h:1588
     /// regparm and the calling convention.
-    unsigned ExtInfo : 13;
+    unsigned ExtInfo : 14;
 
----------------
This is problematic because it increases the cost of forming a type.


================
Comment at: clang/include/clang/AST/Type.h:1826
                                canon.isNull() ? QualType(this_(), 0) : canon) {
-    static_assert(sizeof(*this) <= 8 + sizeof(ExtQualsTypeCommonBase),
+    static_assert(sizeof(*this) <= 16 + sizeof(ExtQualsTypeCommonBase),
                   "changing bitfields changed sizeof(Type)!");
----------------
(From comment above) this means that every type is now more expensive to create 
and that has cascading effects on things like template instantiation depth and 
memory pressures for all users, including people not using this feature.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115199

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

Reply via email to