@@ -1172,15 +1172,16 @@ class DICompositeType : public DIType {
11721172 friend class MDNode ;
11731173
11741174 unsigned RuntimeLang;
1175+ llvm::APInt SpareBitsMask;
11751176
11761177 DICompositeType (LLVMContext &C, StorageType Storage, unsigned Tag,
11771178 unsigned Line, unsigned RuntimeLang, uint64_t SizeInBits,
11781179 uint32_t AlignInBits, uint64_t OffsetInBits,
1179- uint32_t NumExtraInhabitants, DIFlags Flags ,
1180- ArrayRef<Metadata *> Ops)
1180+ uint32_t NumExtraInhabitants, APInt SpareBitsMask ,
1181+ DIFlags Flags, ArrayRef<Metadata *> Ops)
11811182 : DIType(C, DICompositeTypeKind, Storage, Tag, Line, SizeInBits,
11821183 AlignInBits, OffsetInBits, NumExtraInhabitants, Flags, Ops),
1183- RuntimeLang (RuntimeLang) {}
1184+ RuntimeLang (RuntimeLang), SpareBitsMask(SpareBitsMask) {}
11841185 ~DICompositeType () = default ;
11851186
11861187 // / Change fields in place.
@@ -1198,20 +1199,20 @@ class DICompositeType : public DIType {
11981199 getImpl (LLVMContext &Context, unsigned Tag, StringRef Name, Metadata *File,
11991200 unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
12001201 uint32_t AlignInBits, uint64_t OffsetInBits, DIType *SpecificationOf,
1201- uint32_t NumExtraInhabitants, DIFlags Flags, DINodeArray Elements ,
1202- unsigned RuntimeLang, DIType *VTableHolder,
1202+ uint32_t NumExtraInhabitants, APInt SpareBitsMask, DIFlags Flags ,
1203+ DINodeArray Elements, unsigned RuntimeLang, DIType *VTableHolder,
12031204 DITemplateParameterArray TemplateParams, StringRef Identifier,
12041205 DIDerivedType *Discriminator, Metadata *DataLocation,
12051206 Metadata *Associated, Metadata *Allocated, Metadata *Rank,
12061207 DINodeArray Annotations, StorageType Storage,
12071208 bool ShouldCreate = true ) {
1208- return getImpl (Context, Tag, getCanonicalMDString (Context, Name), File,
1209- Line, Scope, BaseType, SizeInBits, AlignInBits, OffsetInBits ,
1210- Flags, Elements.get (), RuntimeLang, VTableHolder ,
1211- TemplateParams.get (),
1212- getCanonicalMDString (Context, Identifier), Discriminator,
1213- DataLocation, Associated, Allocated, Rank, Annotations.get (),
1214- SpecificationOf, NumExtraInhabitants , Storage, ShouldCreate);
1209+ return getImpl (
1210+ Context, Tag, getCanonicalMDString (Context, Name), File, Line, Scope ,
1211+ BaseType, SizeInBits, AlignInBits, OffsetInBits, Flags, Elements.get (),
1212+ RuntimeLang, VTableHolder, TemplateParams.get (),
1213+ getCanonicalMDString (Context, Identifier), Discriminator, DataLocation ,
1214+ Associated, Allocated, Rank, Annotations.get (), SpecificationOf ,
1215+ NumExtraInhabitants, SpareBitsMask , Storage, ShouldCreate);
12151216 }
12161217 static DICompositeType *
12171218 getImpl (LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
@@ -1222,8 +1223,8 @@ class DICompositeType : public DIType {
12221223 MDString *Identifier, Metadata *Discriminator, Metadata *DataLocation,
12231224 Metadata *Associated, Metadata *Allocated, Metadata *Rank,
12241225 Metadata *Annotations, Metadata *SpecificationOf,
1225- uint32_t NumExtraInhabitants, StorageType Storage ,
1226- bool ShouldCreate = true );
1226+ uint32_t NumExtraInhabitants, APInt SpareBitsMask ,
1227+ StorageType Storage, bool ShouldCreate = true );
12271228
12281229 TempDICompositeType cloneImpl () const {
12291230 return getTemporary (
@@ -1233,7 +1234,7 @@ class DICompositeType : public DIType {
12331234 getTemplateParams (), getIdentifier (), getDiscriminator (),
12341235 getRawDataLocation (), getRawAssociated (), getRawAllocated (),
12351236 getRawRank (), getAnnotations (), getSpecificationOf (),
1236- getNumExtraInhabitants ());
1237+ getNumExtraInhabitants (), getSpareBitsMask () );
12371238 }
12381239
12391240public:
@@ -1248,11 +1249,11 @@ class DICompositeType : public DIType {
12481249 Metadata *DataLocation = nullptr , Metadata *Associated = nullptr ,
12491250 Metadata *Allocated = nullptr , Metadata *Rank = nullptr ,
12501251 DINodeArray Annotations = nullptr , DIType *SpecificationOf = nullptr ,
1251- uint32_t NumExtraInhabitants = 0 ),
1252+ uint32_t NumExtraInhabitants = 0 , APInt SpareBitsMask = APInt() ),
12521253 (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
1253- OffsetInBits, SpecificationOf, NumExtraInhabitants, Flags, Elements ,
1254- RuntimeLang, VTableHolder, TemplateParams, Identifier, Discriminator ,
1255- DataLocation, Associated, Allocated, Rank, Annotations))
1254+ OffsetInBits, SpecificationOf, NumExtraInhabitants, SpareBitsMask, Flags ,
1255+ Elements, RuntimeLang, VTableHolder, TemplateParams, Identifier,
1256+ Discriminator, DataLocation, Associated, Allocated, Rank, Annotations))
12561257 DEFINE_MDNODE_GET(
12571258 DICompositeType,
12581259 (unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
@@ -1263,11 +1264,12 @@ class DICompositeType : public DIType {
12631264 Metadata *Discriminator = nullptr , Metadata *DataLocation = nullptr ,
12641265 Metadata *Associated = nullptr , Metadata *Allocated = nullptr ,
12651266 Metadata *Rank = nullptr , Metadata *Annotations = nullptr ,
1266- Metadata *SpecificationOf = nullptr , uint32_t NumExtraInhabitants = 0 ),
1267+ Metadata *SpecificationOf = nullptr , uint32_t NumExtraInhabitants = 0 ,
1268+ APInt SpareBitsMask = APInt()),
12671269 (Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
12681270 OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams,
12691271 Identifier, Discriminator, DataLocation, Associated, Allocated, Rank,
1270- Annotations, SpecificationOf, NumExtraInhabitants))
1272+ Annotations, SpecificationOf, NumExtraInhabitants, SpareBitsMask ))
12711273
12721274 TempDICompositeType clone() const { return cloneImpl (); }
12731275
@@ -1283,7 +1285,7 @@ class DICompositeType : public DIType {
12831285 MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
12841286 Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
12851287 uint64_t OffsetInBits, Metadata *SpecificationOf,
1286- uint32_t NumExtraInhabitants, DIFlags Flags,
1288+ uint32_t NumExtraInhabitants, APInt SpareBitsMask, DIFlags Flags,
12871289 Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
12881290 Metadata *TemplateParams, Metadata *Discriminator,
12891291 Metadata *DataLocation, Metadata *Associated, Metadata *Allocated,
@@ -1305,8 +1307,8 @@ class DICompositeType : public DIType {
13051307 MDString *Name, Metadata *File, unsigned Line, Metadata *Scope,
13061308 Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits,
13071309 uint64_t OffsetInBits, Metadata *SpecificationOf,
1308- uint32_t NumExtraInhabitants, DIFlags Flags, Metadata *Elements ,
1309- unsigned RuntimeLang, Metadata *VTableHolder,
1310+ uint32_t NumExtraInhabitants, APInt SpareBitsMask, DIFlags Flags ,
1311+ Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder,
13101312 Metadata *TemplateParams, Metadata *Discriminator,
13111313 Metadata *DataLocation, Metadata *Associated,
13121314 Metadata *Allocated, Metadata *Rank, Metadata *Annotations);
@@ -1323,6 +1325,7 @@ class DICompositeType : public DIType {
13231325 }
13241326 StringRef getIdentifier () const { return getStringOperand (7 ); }
13251327 unsigned getRuntimeLang () const { return RuntimeLang; }
1328+ const APInt &getSpareBitsMask () const { return SpareBitsMask; }
13261329
13271330 Metadata *getRawBaseType () const { return getOperand (3 ); }
13281331 Metadata *getRawElements () const { return getOperand (4 ); }
0 commit comments