@@ -745,7 +745,7 @@ class DIType : public DIScope {
745745
746746 unsigned getLine () const { return Line; }
747747 uint64_t getSizeInBits () const { return SizeInBits; }
748- uint32_t getAlignInBits () const ;
748+ uint32_t getAlignInBits () const { return SubclassData32; }
749749 uint32_t getAlignInBytes () const { return getAlignInBits () / CHAR_BIT; }
750750 uint64_t getOffsetInBits () const { return OffsetInBits; }
751751 DIFlags getFlags () const { return Flags; }
@@ -972,40 +972,6 @@ class DIStringType : public DIType {
972972// /
973973// / TODO: Split out members (inheritance, fields, methods, etc.).
974974class DIDerivedType : public DIType {
975- public:
976- // / Pointer authentication (__ptrauth) metadata.
977- struct PtrAuthData {
978- union {
979- struct {
980- unsigned Key : 4 ;
981- unsigned IsAddressDiscriminated : 1 ;
982- unsigned ExtraDiscriminator : 16 ;
983- unsigned IsaPointer : 1 ;
984- unsigned AuthenticatesNullValues : 1 ;
985- } Data;
986- unsigned RawData;
987- } Payload;
988-
989- PtrAuthData (unsigned FromRawData) { Payload.RawData = FromRawData; }
990- PtrAuthData (unsigned Key, bool IsDiscr, unsigned Discriminator,
991- bool IsaPointer, bool AuthenticatesNullValues) {
992- assert (Key < 16 );
993- assert (Discriminator <= 0xffff );
994- Payload.Data .Key = Key;
995- Payload.Data .IsAddressDiscriminated = IsDiscr;
996- Payload.Data .ExtraDiscriminator = Discriminator;
997- Payload.Data .IsaPointer = IsaPointer;
998- Payload.Data .AuthenticatesNullValues = AuthenticatesNullValues;
999- }
1000- bool operator ==(struct PtrAuthData Other) const {
1001- return Payload.RawData == Other.Payload .RawData ;
1002- }
1003- bool operator !=(struct PtrAuthData Other) const {
1004- return !(*this == Other);
1005- }
1006- };
1007-
1008- private:
1009975 friend class LLVMContextImpl ;
1010976 friend class MDNode ;
1011977
@@ -1016,70 +982,59 @@ class DIDerivedType : public DIType {
1016982 DIDerivedType (LLVMContext &C, StorageType Storage, unsigned Tag,
1017983 unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits,
1018984 uint64_t OffsetInBits,
1019- std::optional<unsigned > DWARFAddressSpace,
1020- std::optional<PtrAuthData> PtrAuthData, DIFlags Flags,
985+ std::optional<unsigned > DWARFAddressSpace, DIFlags Flags,
1021986 ArrayRef<Metadata *> Ops)
1022987 : DIType(C, DIDerivedTypeKind, Storage, Tag, Line, SizeInBits,
1023988 AlignInBits, OffsetInBits, Flags, Ops),
1024- DWARFAddressSpace (DWARFAddressSpace) {
1025- if (PtrAuthData)
1026- SubclassData32 = PtrAuthData->Payload .RawData ;
1027- }
989+ DWARFAddressSpace (DWARFAddressSpace) {}
1028990 ~DIDerivedType () = default ;
1029991 static DIDerivedType *
1030992 getImpl (LLVMContext &Context, unsigned Tag, StringRef Name, DIFile *File,
1031993 unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
1032994 uint32_t AlignInBits, uint64_t OffsetInBits,
1033- std::optional<unsigned > DWARFAddressSpace,
1034- std::optional<PtrAuthData> PtrAuthData, DIFlags Flags,
995+ std::optional<unsigned > DWARFAddressSpace, DIFlags Flags,
1035996 Metadata *ExtraData, DINodeArray Annotations, StorageType Storage,
1036997 bool ShouldCreate = true ) {
1037998 return getImpl (Context, Tag, getCanonicalMDString (Context, Name), File,
1038999 Line, Scope, BaseType, SizeInBits, AlignInBits, OffsetInBits,
1039- DWARFAddressSpace, PtrAuthData, Flags, ExtraData,
1040- Annotations. get (), Storage, ShouldCreate);
1000+ DWARFAddressSpace, Flags, ExtraData, Annotations. get () ,
1001+ Storage, ShouldCreate);
10411002 }
10421003 static DIDerivedType *
10431004 getImpl (LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
10441005 unsigned Line, Metadata *Scope, Metadata *BaseType,
10451006 uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
1046- std::optional<unsigned > DWARFAddressSpace,
1047- std::optional<PtrAuthData> PtrAuthData, DIFlags Flags,
1007+ std::optional<unsigned > DWARFAddressSpace, DIFlags Flags,
10481008 Metadata *ExtraData, Metadata *Annotations, StorageType Storage,
10491009 bool ShouldCreate = true );
10501010
10511011 TempDIDerivedType cloneImpl () const {
1052- return getTemporary (getContext (), getTag (), getName (), getFile (), getLine (),
1053- getScope (), getBaseType (), getSizeInBits (),
1054- getAlignInBits (), getOffsetInBits (),
1055- getDWARFAddressSpace (), getPtrAuthData (), getFlags (),
1056- getExtraData (), getAnnotations ());
1012+ return getTemporary (
1013+ getContext (), getTag (), getName (), getFile (), getLine (), getScope (),
1014+ getBaseType (), getSizeInBits (), getAlignInBits (), getOffsetInBits (),
1015+ getDWARFAddressSpace (), getFlags (), getExtraData (), getAnnotations ());
10571016 }
10581017
10591018public:
1060- DEFINE_MDNODE_GET (DIDerivedType,
1061- (unsigned Tag, MDString *Name, Metadata *File,
1062- unsigned Line, Metadata *Scope, Metadata *BaseType,
1063- uint64_t SizeInBits, uint32_t AlignInBits,
1064- uint64_t OffsetInBits,
1065- std::optional<unsigned > DWARFAddressSpace,
1066- std::optional<PtrAuthData> PtrAuthData, DIFlags Flags,
1067- Metadata *ExtraData = nullptr ,
1068- Metadata *Annotations = nullptr ),
1069- (Tag, Name, File, Line, Scope, BaseType, SizeInBits,
1070- AlignInBits, OffsetInBits, DWARFAddressSpace, PtrAuthData,
1071- Flags, ExtraData, Annotations))
1019+ DEFINE_MDNODE_GET (
1020+ DIDerivedType,
1021+ (unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
1022+ Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
1023+ uint32_t AlignInBits, uint64_t OffsetInBits,
1024+ std::optional<unsigned > DWARFAddressSpace, DIFlags Flags,
1025+ Metadata *ExtraData = nullptr , Metadata *Annotations = nullptr ),
1026+ (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
1027+ OffsetInBits, DWARFAddressSpace, Flags, ExtraData, Annotations))
10721028 DEFINE_MDNODE_GET(DIDerivedType,
10731029 (unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
10741030 DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
10751031 uint32_t AlignInBits, uint64_t OffsetInBits,
1076- std::optional<unsigned > DWARFAddressSpace,
1077- std::optional<PtrAuthData> PtrAuthData, DIFlags Flags,
1032+ std::optional<unsigned > DWARFAddressSpace, DIFlags Flags,
10781033 Metadata *ExtraData = nullptr ,
10791034 DINodeArray Annotations = nullptr ),
10801035 (Tag, Name, File, Line, Scope, BaseType, SizeInBits,
1081- AlignInBits, OffsetInBits, DWARFAddressSpace, PtrAuthData ,
1082- Flags, ExtraData, Annotations))
1036+ AlignInBits, OffsetInBits, DWARFAddressSpace, Flags ,
1037+ ExtraData, Annotations))
10831038
10841039 TempDIDerivedType clone() const { return cloneImpl (); }
10851040
@@ -1093,39 +1048,6 @@ class DIDerivedType : public DIType {
10931048 return DWARFAddressSpace;
10941049 }
10951050
1096- std::optional<PtrAuthData> getPtrAuthData () const ;
1097-
1098- // / \returns The PointerAuth key.
1099- std::optional<unsigned > getPtrAuthKey () const {
1100- if (auto PtrAuthData = getPtrAuthData ())
1101- return (unsigned )PtrAuthData->Payload .Data .Key ;
1102- return std::nullopt ;
1103- }
1104- // / \returns The PointerAuth address discrimination bit.
1105- std::optional<bool > isPtrAuthAddressDiscriminated () const {
1106- if (auto PtrAuthData = getPtrAuthData ())
1107- return (bool )PtrAuthData->Payload .Data .IsAddressDiscriminated ;
1108- return std::nullopt ;
1109- }
1110- // / \returns The PointerAuth extra discriminator.
1111- std::optional<unsigned > getPtrAuthExtraDiscriminator () const {
1112- if (auto PtrAuthData = getPtrAuthData ())
1113- return (unsigned )PtrAuthData->Payload .Data .ExtraDiscriminator ;
1114- return std::nullopt ;
1115- }
1116- // / \returns The PointerAuth IsaPointer bit.
1117- std::optional<bool > isPtrAuthIsaPointer () const {
1118- if (auto PtrAuthData = getPtrAuthData ())
1119- return (bool )PtrAuthData->Payload .Data .IsaPointer ;
1120- return std::nullopt ;
1121- }
1122- // / \returns The PointerAuth authenticates null values bit.
1123- std::optional<bool > getPtrAuthAuthenticatesNullValues () const {
1124- if (auto PtrAuthData = getPtrAuthData ())
1125- return (bool )PtrAuthData->Payload .Data .AuthenticatesNullValues ;
1126- return std::nullopt ;
1127- }
1128-
11291051 // / Get extra data associated with this derived type.
11301052 // /
11311053 // / Class type for pointer-to-members, objective-c property node for ivars,
0 commit comments