@@ -428,6 +428,16 @@ DIDerivedType *DIBuilder::createMemberType(
428428 std::nullopt , Flags, nullptr , Annotations);
429429}
430430
431+ DIDerivedType *DIBuilder::createMemberType (
432+ DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
433+ Metadata *SizeInBits, uint32_t AlignInBits, Metadata *OffsetInBits,
434+ DINode::DIFlags Flags, DIType *Ty, DINodeArray Annotations) {
435+ return DIDerivedType::get (VMContext, dwarf::DW_TAG_member, Name, File,
436+ LineNumber, getNonCompileUnitScope (Scope), Ty,
437+ SizeInBits, AlignInBits, OffsetInBits, std::nullopt ,
438+ std::nullopt , Flags, nullptr , Annotations);
439+ }
440+
431441static ConstantAsMetadata *getConstantOrNull (Constant *C) {
432442 if (C)
433443 return ConstantAsMetadata::get (C);
@@ -461,6 +471,20 @@ DIDerivedType *DIBuilder::createVariantMemberType(DIScope *Scope,
461471 DINode::FlagZero, V);
462472}
463473
474+ DIDerivedType *DIBuilder::createBitFieldMemberType (
475+ DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
476+ Metadata *SizeInBits, Metadata *OffsetInBits, uint64_t StorageOffsetInBits,
477+ DINode::DIFlags Flags, DIType *Ty, DINodeArray Annotations) {
478+ Flags |= DINode::FlagBitField;
479+ return DIDerivedType::get (
480+ VMContext, dwarf::DW_TAG_member, Name, File, LineNumber,
481+ getNonCompileUnitScope (Scope), Ty, SizeInBits, /* AlignInBits=*/ 0 ,
482+ OffsetInBits, std::nullopt , std::nullopt , Flags,
483+ ConstantAsMetadata::get (ConstantInt::get (IntegerType::get (VMContext, 64 ),
484+ StorageOffsetInBits)),
485+ Annotations);
486+ }
487+
464488DIDerivedType *DIBuilder::createBitFieldMemberType (
465489 DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
466490 uint64_t SizeInBits, uint64_t OffsetInBits, uint64_t StorageOffsetInBits,
@@ -565,6 +589,22 @@ DICompositeType *DIBuilder::createClassType(
565589 return R;
566590}
567591
592+ DICompositeType *DIBuilder::createStructType (
593+ DIScope *Context, StringRef Name, DIFile *File, unsigned LineNumber,
594+ Metadata *SizeInBits, uint32_t AlignInBits, DINode::DIFlags Flags,
595+ DIType *DerivedFrom, DINodeArray Elements, unsigned RunTimeLang,
596+ DIType *VTableHolder, StringRef UniqueIdentifier, DIType *Specification,
597+ uint32_t NumExtraInhabitants) {
598+ auto *R = DICompositeType::get (
599+ VMContext, dwarf::DW_TAG_structure_type, Name, File, LineNumber,
600+ getNonCompileUnitScope (Context), DerivedFrom, SizeInBits, AlignInBits, 0 ,
601+ Flags, Elements, RunTimeLang, /* EnumKind=*/ std::nullopt , VTableHolder,
602+ nullptr , UniqueIdentifier, nullptr , nullptr , nullptr , nullptr , nullptr ,
603+ nullptr , Specification, NumExtraInhabitants);
604+ trackIfUnresolved (R);
605+ return R;
606+ }
607+
568608DICompositeType *DIBuilder::createStructType (
569609 DIScope *Context, StringRef Name, DIFile *File, unsigned LineNumber,
570610 uint64_t SizeInBits, uint32_t AlignInBits, DINode::DIFlags Flags,
0 commit comments