================ @@ -809,43 +927,42 @@ class Selector { enum IdentifierInfoFlag { // Empty selector = 0. Note that these enumeration values must // correspond to the enumeration values of DeclarationName::StoredNameKind - ZeroArg = 0x01, - OneArg = 0x02, + ZeroArg = 0x01, + OneArg = 0x02, MultiArg = 0x07, - ArgFlags = 0x07 }; /// A pointer to the MultiKeywordSelector or IdentifierInfo. We use the low - /// three bits of InfoPtr to store an IdentifierInfoFlag. Note that in any + /// three bits of InfoPtr to store an IdentifierInfoFlag, but the highest + /// of them is also a discriminator for pointer type. Note that in any /// case IdentifierInfo and MultiKeywordSelector are already aligned to /// 8 bytes even on 32 bits archs because of DeclarationName. - uintptr_t InfoPtr = 0; + llvm::PointerIntPair< + llvm::PointerUnion<IdentifierInfo *, MultiKeywordSelector *>, 2> + InfoPtr; ---------------- Endilll wrote:
Applied with an addition we discussed offline. https://github.com/llvm/llvm-project/pull/69916 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits