@@ -745,7 +745,7 @@ class DIType : public DIScope {
745
745
746
746
unsigned getLine () const { return Line; }
747
747
uint64_t getSizeInBits () const { return SizeInBits; }
748
- uint32_t getAlignInBits () const ;
748
+ uint32_t getAlignInBits () const { return SubclassData32; }
749
749
uint32_t getAlignInBytes () const { return getAlignInBits () / CHAR_BIT; }
750
750
uint64_t getOffsetInBits () const { return OffsetInBits; }
751
751
DIFlags getFlags () const { return Flags; }
@@ -972,40 +972,6 @@ class DIStringType : public DIType {
972
972
// /
973
973
// / TODO: Split out members (inheritance, fields, methods, etc.).
974
974
class 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:
1009
975
friend class LLVMContextImpl ;
1010
976
friend class MDNode ;
1011
977
@@ -1016,70 +982,59 @@ class DIDerivedType : public DIType {
1016
982
DIDerivedType (LLVMContext &C, StorageType Storage, unsigned Tag,
1017
983
unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits,
1018
984
uint64_t OffsetInBits,
1019
- std::optional<unsigned > DWARFAddressSpace,
1020
- std::optional<PtrAuthData> PtrAuthData, DIFlags Flags,
985
+ std::optional<unsigned > DWARFAddressSpace, DIFlags Flags,
1021
986
ArrayRef<Metadata *> Ops)
1022
987
: DIType(C, DIDerivedTypeKind, Storage, Tag, Line, SizeInBits,
1023
988
AlignInBits, OffsetInBits, Flags, Ops),
1024
- DWARFAddressSpace (DWARFAddressSpace) {
1025
- if (PtrAuthData)
1026
- SubclassData32 = PtrAuthData->Payload .RawData ;
1027
- }
989
+ DWARFAddressSpace (DWARFAddressSpace) {}
1028
990
~DIDerivedType () = default ;
1029
991
static DIDerivedType *
1030
992
getImpl (LLVMContext &Context, unsigned Tag, StringRef Name, DIFile *File,
1031
993
unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
1032
994
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,
1035
996
Metadata *ExtraData, DINodeArray Annotations, StorageType Storage,
1036
997
bool ShouldCreate = true ) {
1037
998
return getImpl (Context, Tag, getCanonicalMDString (Context, Name), File,
1038
999
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);
1041
1002
}
1042
1003
static DIDerivedType *
1043
1004
getImpl (LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
1044
1005
unsigned Line, Metadata *Scope, Metadata *BaseType,
1045
1006
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,
1048
1008
Metadata *ExtraData, Metadata *Annotations, StorageType Storage,
1049
1009
bool ShouldCreate = true );
1050
1010
1051
1011
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 ());
1057
1016
}
1058
1017
1059
1018
public:
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))
1072
1028
DEFINE_MDNODE_GET(DIDerivedType,
1073
1029
(unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
1074
1030
DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
1075
1031
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,
1078
1033
Metadata *ExtraData = nullptr ,
1079
1034
DINodeArray Annotations = nullptr ),
1080
1035
(Tag, Name, File, Line, Scope, BaseType, SizeInBits,
1081
- AlignInBits, OffsetInBits, DWARFAddressSpace, PtrAuthData ,
1082
- Flags, ExtraData, Annotations))
1036
+ AlignInBits, OffsetInBits, DWARFAddressSpace, Flags ,
1037
+ ExtraData, Annotations))
1083
1038
1084
1039
TempDIDerivedType clone() const { return cloneImpl (); }
1085
1040
@@ -1093,39 +1048,6 @@ class DIDerivedType : public DIType {
1093
1048
return DWARFAddressSpace;
1094
1049
}
1095
1050
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
-
1129
1051
// / Get extra data associated with this derived type.
1130
1052
// /
1131
1053
// / Class type for pointer-to-members, objective-c property node for ivars,
0 commit comments