@@ -1206,20 +1206,22 @@ class DICompositeType : public DIType {
12061206 getImpl (LLVMContext &Context, unsigned Tag, StringRef Name, Metadata *File,
12071207 unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
12081208 uint32_t AlignInBits, uint64_t OffsetInBits, DIType *SpecificationOf,
1209- uint32_t NumExtraInhabitants, DIFlags Flags, DINodeArray Elements ,
1210- unsigned RuntimeLang, DIType *VTableHolder ,
1211- DITemplateParameterArray TemplateParams, StringRef Identifier ,
1212- DIDerivedType *Discriminator, Metadata *DataLocation ,
1213- Metadata *Associated , Metadata *Allocated , Metadata *Rank ,
1214- DINodeArray Annotations, StorageType Storage,
1209+ uint32_t NumExtraInhabitants, StringRef AlternativeModuleName ,
1210+ DIFlags Flags, DINodeArray Elements, unsigned RuntimeLang ,
1211+ DIType *VTableHolder, DITemplateParameterArray TemplateParams ,
1212+ StringRef Identifier, DIDerivedType *Discriminator ,
1213+ Metadata *DataLocation , Metadata *Associated , Metadata *Allocated ,
1214+ Metadata *Rank, DINodeArray Annotations, StorageType Storage,
12151215 bool ShouldCreate = true ) {
12161216 return getImpl (Context, Tag, getCanonicalMDString (Context, Name), File,
12171217 Line, Scope, BaseType, SizeInBits, AlignInBits, OffsetInBits,
12181218 Flags, Elements.get (), RuntimeLang, VTableHolder,
12191219 TemplateParams.get (),
12201220 getCanonicalMDString (Context, Identifier), Discriminator,
12211221 DataLocation, Associated, Allocated, Rank, Annotations.get (),
1222- SpecificationOf, NumExtraInhabitants, Storage, ShouldCreate);
1222+ SpecificationOf, NumExtraInhabitants,
1223+ getCanonicalMDString (Context, AlternativeModuleName),
1224+ Storage, ShouldCreate);
12231225 }
12241226 static DICompositeType *
12251227 getImpl (LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
@@ -1230,8 +1232,8 @@ class DICompositeType : public DIType {
12301232 MDString *Identifier, Metadata *Discriminator, Metadata *DataLocation,
12311233 Metadata *Associated, Metadata *Allocated, Metadata *Rank,
12321234 Metadata *Annotations, Metadata *SpecificationOf,
1233- uint32_t NumExtraInhabitants, StorageType Storage ,
1234- bool ShouldCreate = true );
1235+ uint32_t NumExtraInhabitants, MDString *AlternativeModuleName ,
1236+ StorageType Storage, bool ShouldCreate = true );
12351237
12361238 TempDICompositeType cloneImpl () const {
12371239 return getTemporary (
@@ -1241,7 +1243,7 @@ class DICompositeType : public DIType {
12411243 getTemplateParams (), getIdentifier (), getDiscriminator (),
12421244 getRawDataLocation (), getRawAssociated (), getRawAllocated (),
12431245 getRawRank (), getAnnotations (), getSpecificationOf (),
1244- getNumExtraInhabitants ());
1246+ getNumExtraInhabitants (), getAlternativeModuleName () );
12451247 }
12461248
12471249public:
@@ -1256,11 +1258,12 @@ class DICompositeType : public DIType {
12561258 Metadata *DataLocation = nullptr , Metadata *Associated = nullptr ,
12571259 Metadata *Allocated = nullptr , Metadata *Rank = nullptr ,
12581260 DINodeArray Annotations = nullptr , DIType *SpecificationOf = nullptr ,
1259- uint32_t NumExtraInhabitants = 0 ),
1261+ uint32_t NumExtraInhabitants = 0 , StringRef AlternativeModuleName = " " ),
12601262 (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
1261- OffsetInBits, SpecificationOf, NumExtraInhabitants, Flags, Elements,
1262- RuntimeLang, VTableHolder, TemplateParams, Identifier, Discriminator,
1263- DataLocation, Associated, Allocated, Rank, Annotations))
1263+ OffsetInBits, SpecificationOf, NumExtraInhabitants,
1264+ AlternativeModuleName, Flags, Elements, RuntimeLang, VTableHolder,
1265+ TemplateParams, Identifier, Discriminator, DataLocation, Associated,
1266+ Allocated, Rank, Annotations))
12641267 DEFINE_MDNODE_GET(
12651268 DICompositeType,
12661269 (unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
@@ -1271,11 +1274,13 @@ class DICompositeType : public DIType {
12711274 Metadata *Discriminator = nullptr , Metadata *DataLocation = nullptr ,
12721275 Metadata *Associated = nullptr , Metadata *Allocated = nullptr ,
12731276 Metadata *Rank = nullptr , Metadata *Annotations = nullptr ,
1274- Metadata *SpecificationOf = nullptr , uint32_t NumExtraInhabitants = 0 ),
1277+ Metadata *SpecificationOf = nullptr , uint32_t NumExtraInhabitants = 0 ,
1278+ MDString *AlternativeModuleName = nullptr ),
12751279 (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
12761280 OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams,
12771281 Identifier, Discriminator, DataLocation, Associated, Allocated, Rank,
1278- Annotations, SpecificationOf, NumExtraInhabitants))
1282+ Annotations, SpecificationOf, NumExtraInhabitants,
1283+ AlternativeModuleName))
12791284
12801285 TempDICompositeType clone() const { return cloneImpl (); }
12811286
@@ -1286,16 +1291,15 @@ class DICompositeType : public DIType {
12861291 // / a new node.
12871292 // /
12881293 // / Else, returns \c nullptr.
1289- static DICompositeType *
1290- getODRType (LLVMContext &Context, MDString &Identifier, unsigned Tag,
1291- MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
1292- Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
1293- uint64_t OffsetInBits, Metadata *SpecificationOf,
1294- uint32_t NumExtraInhabitants, DIFlags Flags,
1295- Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
1296- Metadata *TemplateParams, Metadata *Discriminator,
1297- Metadata *DataLocation, Metadata *Associated, Metadata *Allocated,
1298- Metadata *Rank, Metadata *Annotations);
1294+ static DICompositeType *getODRType (
1295+ LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name,
1296+ Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType,
1297+ uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
1298+ Metadata *SpecificationOf, uint32_t NumExtraInhabitants,
1299+ MDString *AlternativeModuleName, DIFlags Flags, Metadata *Elements,
1300+ unsigned RuntimeLang, Metadata *VTableHolder, Metadata *TemplateParams,
1301+ Metadata *Discriminator, Metadata *DataLocation, Metadata *Associated,
1302+ Metadata *Allocated, Metadata *Rank, Metadata *Annotations);
12991303 static DICompositeType *getODRTypeIfExists (LLVMContext &Context,
13001304 MDString &Identifier);
13011305
@@ -1308,16 +1312,15 @@ class DICompositeType : public DIType {
13081312 // /
13091313 // / If not \a LLVMContext::isODRUniquingDebugTypes(), this function returns
13101314 // / nullptr.
1311- static DICompositeType *
1312- buildODRType (LLVMContext &Context, MDString &Identifier, unsigned Tag,
1313- MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
1314- Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
1315- uint64_t OffsetInBits, Metadata *SpecificationOf,
1316- uint32_t NumExtraInhabitants, DIFlags Flags, Metadata *Elements,
1317- unsigned RuntimeLang, Metadata *VTableHolder,
1318- Metadata *TemplateParams, Metadata *Discriminator,
1319- Metadata *DataLocation, Metadata *Associated,
1320- Metadata *Allocated, Metadata *Rank, Metadata *Annotations);
1315+ static DICompositeType *buildODRType (
1316+ LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name,
1317+ Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType,
1318+ uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
1319+ Metadata *SpecificationOf, uint32_t NumExtraInhabitants,
1320+ MDString *AlternativeModuleName, DIFlags Flags, Metadata *Elements,
1321+ unsigned RuntimeLang, Metadata *VTableHolder, Metadata *TemplateParams,
1322+ Metadata *Discriminator, Metadata *DataLocation, Metadata *Associated,
1323+ Metadata *Allocated, Metadata *Rank, Metadata *Annotations);
13211324
13221325 DIType *getBaseType () const { return cast_or_null<DIType>(getRawBaseType ()); }
13231326 DINodeArray getElements () const {
@@ -1382,6 +1385,10 @@ class DICompositeType : public DIType {
13821385 return cast_or_null<DIType>(getRawSpecificationOf ());
13831386 }
13841387
1388+ MDString *getRawAlternativeModuleName () const {
1389+ return getOperandAs<MDString>(15 );
1390+ }
1391+ StringRef getAlternativeModuleName () const { return getStringOperand (15 ); }
13851392 // / Replace operands.
13861393 // /
13871394 // / If this \a isUniqued() and not \a isResolved(), on a uniquing collision
0 commit comments