@@ -931,56 +931,57 @@ class DICompositeType : public DIType {
931931 uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
932932 DINodeArray Elements, unsigned RuntimeLang, DIType *VTableHolder,
933933 DITemplateParameterArray TemplateParams, StringRef Identifier,
934- DIDerivedType *Discriminator, StorageType Storage,
935- bool ShouldCreate = true ) {
936- return getImpl (
937- Context, Tag, getCanonicalMDString (Context, Name), File, Line, Scope,
938- BaseType, SizeInBits, AlignInBits, OffsetInBits, Flags, Elements.get (),
939- RuntimeLang, VTableHolder, TemplateParams.get (),
940- getCanonicalMDString (Context, Identifier), Discriminator, Storage, ShouldCreate);
934+ DIDerivedType *Discriminator, Metadata *DataLocation,
935+ StorageType Storage, bool ShouldCreate = true ) {
936+ return getImpl (Context, Tag, getCanonicalMDString (Context, Name), File,
937+ Line, Scope, BaseType, SizeInBits, AlignInBits, OffsetInBits,
938+ Flags, Elements.get (), RuntimeLang, VTableHolder,
939+ TemplateParams.get (),
940+ getCanonicalMDString (Context, Identifier), Discriminator,
941+ DataLocation, Storage, ShouldCreate);
941942 }
942943 static DICompositeType *
943944 getImpl (LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
944945 unsigned Line, Metadata *Scope, Metadata *BaseType,
945946 uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
946947 DIFlags Flags, Metadata *Elements, unsigned RuntimeLang,
947948 Metadata *VTableHolder, Metadata *TemplateParams,
948- MDString *Identifier, Metadata *Discriminator,
949+ MDString *Identifier, Metadata *Discriminator, Metadata *DataLocation,
949950 StorageType Storage, bool ShouldCreate = true );
950951
951952 TempDICompositeType cloneImpl () const {
952953 return getTemporary (getContext (), getTag (), getName (), getFile (), getLine (),
953954 getScope (), getBaseType (), getSizeInBits (),
954955 getAlignInBits (), getOffsetInBits (), getFlags (),
955956 getElements (), getRuntimeLang (), getVTableHolder (),
956- getTemplateParams (), getIdentifier (), getDiscriminator ());
957+ getTemplateParams (), getIdentifier (),
958+ getDiscriminator (), getRawDataLocation ());
957959 }
958960
959961public:
960- DEFINE_MDNODE_GET (DICompositeType,
961- (unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
962- DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
963- uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
964- DINodeArray Elements, unsigned RuntimeLang,
965- DIType *VTableHolder,
966- DITemplateParameterArray TemplateParams = nullptr ,
967- StringRef Identifier = " " ,
968- DIDerivedType *Discriminator = nullptr ),
969- (Tag, Name, File, Line, Scope, BaseType, SizeInBits,
970- AlignInBits, OffsetInBits, Flags, Elements, RuntimeLang,
971- VTableHolder, TemplateParams, Identifier, Discriminator))
972- DEFINE_MDNODE_GET(DICompositeType,
973- (unsigned Tag, MDString *Name, Metadata *File,
974- unsigned Line, Metadata *Scope, Metadata *BaseType,
975- uint64_t SizeInBits, uint32_t AlignInBits,
976- uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements,
977- unsigned RuntimeLang, Metadata *VTableHolder,
978- Metadata *TemplateParams = nullptr ,
979- MDString *Identifier = nullptr ,
980- Metadata *Discriminator = nullptr ),
981- (Tag, Name, File, Line, Scope, BaseType, SizeInBits,
982- AlignInBits, OffsetInBits, Flags, Elements, RuntimeLang,
983- VTableHolder, TemplateParams, Identifier, Discriminator))
962+ DEFINE_MDNODE_GET (
963+ DICompositeType,
964+ (unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
965+ DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
966+ uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
967+ DINodeArray Elements, unsigned RuntimeLang, DIType *VTableHolder,
968+ DITemplateParameterArray TemplateParams = nullptr ,
969+ StringRef Identifier = " " , DIDerivedType *Discriminator = nullptr ,
970+ Metadata *DataLocation = nullptr ),
971+ (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
972+ OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams,
973+ Identifier, Discriminator, DataLocation))
974+ DEFINE_MDNODE_GET(
975+ DICompositeType,
976+ (unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
977+ Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
978+ uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags,
979+ Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
980+ Metadata *TemplateParams = nullptr , MDString *Identifier = nullptr ,
981+ Metadata *Discriminator = nullptr , Metadata *DataLocation = nullptr ),
982+ (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
983+ OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams,
984+ Identifier, Discriminator, DataLocation))
984985
985986 TempDICompositeType clone() const { return cloneImpl (); }
986987
@@ -997,7 +998,8 @@ class DICompositeType : public DIType {
997998 Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
998999 uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements,
9991000 unsigned RuntimeLang, Metadata *VTableHolder,
1000- Metadata *TemplateParams, Metadata *Discriminator);
1001+ Metadata *TemplateParams, Metadata *Discriminator,
1002+ Metadata *DataLocation);
10011003 static DICompositeType *getODRTypeIfExists (LLVMContext &Context,
10021004 MDString &Identifier);
10031005
@@ -1016,7 +1018,8 @@ class DICompositeType : public DIType {
10161018 Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
10171019 uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements,
10181020 unsigned RuntimeLang, Metadata *VTableHolder,
1019- Metadata *TemplateParams, Metadata *Discriminator);
1021+ Metadata *TemplateParams, Metadata *Discriminator,
1022+ Metadata *DataLocation);
10201023
10211024 DIType *getBaseType () const { return cast_or_null<DIType>(getRawBaseType ()); }
10221025 DINodeArray getElements () const {
@@ -1038,6 +1041,13 @@ class DICompositeType : public DIType {
10381041 MDString *getRawIdentifier () const { return getOperandAs<MDString>(7 ); }
10391042 Metadata *getRawDiscriminator () const { return getOperand (8 ); }
10401043 DIDerivedType *getDiscriminator () const { return getOperandAs<DIDerivedType>(8 ); }
1044+ Metadata *getRawDataLocation () const { return getOperand (9 ); }
1045+ DIVariable *getDataLocation () const {
1046+ return dyn_cast_or_null<DIVariable>(getRawDataLocation ());
1047+ }
1048+ DIExpression *getDataLocationExp () const {
1049+ return dyn_cast_or_null<DIExpression>(getRawDataLocation ());
1050+ }
10411051
10421052 // / Replace operands.
10431053 // /
0 commit comments