cor3ntin wrote:

FYI, Erich and I dumped the layout.

```
*** Dumping AST Record Layout
         0 | class clang::Decl
         0 |   (Decl vtable pointer)
         8 |   class llvm::PointerIntPair<class clang::Decl *, 3, enum 
clang::Decl::ModuleOwnershipKind> NextInContextAndBits
         8 |     struct llvm::detail::PunnedPointer<class clang::Decl *> Value
         8 |       unsigned char[8] Data
        16 |   class llvm::PointerUnion<class clang::DeclContext *, struct 
clang::Decl::MultipleDC *> DeclCtx
        16 |     class llvm::pointer_union_detail::PointerUnionMembers<class 
llvm::PointerUnion<class clang::DeclContext *, struct clang::Decl::MultipleDC 
*>, 0, class clang::DeclContext *, struct clang::Decl::MultipleDC *> (base)
        16 |       class llvm::pointer_union_detail::PointerUnionMembers<class 
llvm::PointerUnion<class clang::DeclContext *, struct clang::Decl::MultipleDC 
*>, 1, struct clang::Decl::MultipleDC *> (base)
        16 |         class 
llvm::pointer_union_detail::PointerUnionMembers<class llvm::PointerUnion<class 
clang::DeclContext *, struct clang::Decl::MultipleDC *>, 2> (base)
        16 |           struct llvm::detail::PunnedPointer<void *> Val
        16 |             unsigned char[8] Data
        24 |   class clang::SourceLocation Loc
        24 |     UIntTy ID
    28:0-6 |   unsigned int DeclKind
    28:7-7 |   unsigned int InvalidDecl
    29:0-0 |   unsigned int HasAttrs
    29:1-1 |   unsigned int Implicit
    29:2-2 |   unsigned int Used
    29:3-3 |   unsigned int Referenced
    29:4-4 |   unsigned int TopLevelDeclInObjCContainer
    29:5-6 |   unsigned int Access
    29:7-7 |   unsigned int FromASTFile
   30:0-13 |   unsigned int IdentifierNamespace
    32:0-2 |   unsigned int CacheValidAndLinkage
           | [sizeof=40, dsize=33, align=8,
           |  nvsize=33, nvalign=8]
```

Based on that, the change probably makes sense.
We should note that we are gonna be pretty bit-starved afterwards, the new 
pointer could have its alignment bits stolen and we probably can reduce 
IdentifierNamespace by a couple of bits, but that's it


https://github.com/llvm/llvm-project/pull/219138
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to