gftg added a comment.
This patch as-is doesn't build. To build it needs another change that I know is
wrong, so I'm posting it below to ask for your help:
[RFC] How to add more bits to the Type class?
After reading https://reviews.llvm.org/D50630, I learned that keeping
the size of the 'Type' class to a minimum (currently 24 bytes, where 8
bytes are due to the various Bit Field classes) is desired. However,
while trying to add a new function attribute (see the precious patches
in this series), the new bit caused FunctionTypeBitfields to become 4
bytes larger (previously 8 bytes), which becomes the larger member of
the Bit Field union. The whole Type class increased in size to 32 bytes
up from 24 (an 8-byte increase).
This patch does the easy workaround of letting the size of the Type
class grow to 32 bytes. However, I would like to know how to avoid this
while still being able to add the new function attribute. I know it's a
lot to ask, but could somebody teach me how to do this "the proper way"?
Cheers,
Gabriel
diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h
index 7a00c7d2be8c..4d359d08a522 100644
--- a/clang/include/clang/AST/Type.h
+++ b/clang/include/clang/AST/Type.h
@@ -1824,7 +1824,7 @@ protected:
Type(TypeClass tc, QualType canon, TypeDependence Dependence)
: ExtQualsTypeCommonBase(this,
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)!");
static_assert(alignof(decltype(*this)) % sizeof(void *) == 0,
"Insufficient alignment!");
I realize that sending extra diffs here is probably not how this community
works, but please bear with me while I get used to it (I'm a newcomer).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D118355/new/
https://reviews.llvm.org/D118355
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits