DIBuilder *D = unwrap(Dref);
return wrap(
D->createSubroutineType(File ? unwrap<MDFile>(File) : nullptr,
- DITypeArray(unwrap<MDTuple>(ParameterTypes))));
+ MDTypeRefArray(unwrap<MDTuple>(ParameterTypes))));
}
LLVMMetadataRef LLVMDIBuilderCreateStructType(
unwrap<MDScope>(Scope), Name, File ? unwrap<MDFile>(File) : nullptr, Line,
SizeInBits, AlignInBits, Flags,
DerivedFrom ? unwrap<MDType>(DerivedFrom) : nullptr,
- ElementTypes ? DIArray(unwrap<MDTuple>(ElementTypes)) : nullptr));
+ ElementTypes ? DebugNodeArray(unwrap<MDTuple>(ElementTypes)) : nullptr));
}
LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
DIBuilder *D = unwrap(Dref);
return wrap(D->createArrayType(SizeInBits, AlignInBits,
unwrap<MDType>(ElementType),
- DIArray(unwrap<MDTuple>(Subscripts))));
+ DebugNodeArray(unwrap<MDTuple>(Subscripts))));
}
LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref,
DIBuilder *D = unwrap(Dref);
Metadata **DataValue = unwrap(Data);
ArrayRef<Metadata *> Elements(DataValue, Length);
- DIArray A = D->getOrCreateArray(Elements);
+ DebugNodeArray A = D->getOrCreateArray(Elements);
return wrap(A.get());
}
DIBuilder *D = unwrap(Dref);
Metadata **DataValue = unwrap(Data);
ArrayRef<Metadata *> Elements(DataValue, Length);
- DITypeArray A = D->getOrCreateTypeArray(Elements);
+ MDTypeRefArray A = D->getOrCreateTypeArray(Elements);
return wrap(A.get());
}
/// for more info.
/// @param TemplateParms Template type parameters.
/// @param UniqueIdentifier A unique identifier for the class.
- MDCompositeType *createClassType(MDScope *Scope, StringRef Name,
- MDFile *File, unsigned LineNumber,
- uint64_t SizeInBits, uint64_t AlignInBits,
- uint64_t OffsetInBits, unsigned Flags,
- MDType *DerivedFrom, DIArray Elements,
- MDType *VTableHolder = nullptr,
- MDNode *TemplateParms = nullptr,
- StringRef UniqueIdentifier = "");
+ MDCompositeType *createClassType(
+ MDScope *Scope, StringRef Name, MDFile *File, unsigned LineNumber,
+ uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
+ unsigned Flags, MDType *DerivedFrom, DebugNodeArray Elements,
+ MDType *VTableHolder = nullptr, MDNode *TemplateParms = nullptr,
+ StringRef UniqueIdentifier = "");
/// createStructType - Create debugging information entry for a struct.
/// @param Scope Scope in which this struct is defined.
MDCompositeType *createStructType(
MDScope *Scope, StringRef Name, MDFile *File, unsigned LineNumber,
uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
- MDType *DerivedFrom, DIArray Elements, unsigned RunTimeLang = 0,
+ MDType *DerivedFrom, DebugNodeArray Elements, unsigned RunTimeLang = 0,
MDType *VTableHolder = nullptr, StringRef UniqueIdentifier = "");
/// createUnionType - Create debugging information entry for an union.
MDCompositeType *createUnionType(MDScope *Scope, StringRef Name,
MDFile *File, unsigned LineNumber,
uint64_t SizeInBits, uint64_t AlignInBits,
- unsigned Flags, DIArray Elements,
+ unsigned Flags, DebugNodeArray Elements,
unsigned RunTimeLang = 0,
StringRef UniqueIdentifier = "");
MDTemplateValueParameter *createTemplateParameterPack(MDScope *Scope,
StringRef Name,
MDType *Ty,
- DIArray Val);
+ DebugNodeArray Val);
/// createArrayType - Create debugging information entry for an array.
/// @param Size Array size.
/// @param Ty Element type.
/// @param Subscripts Subscripts.
MDCompositeType *createArrayType(uint64_t Size, uint64_t AlignInBits,
- MDType *Ty, DIArray Subscripts);
+ MDType *Ty, DebugNodeArray Subscripts);
/// createVectorType - Create debugging information entry for a vector type.
/// @param Size Array size.
/// @param Ty Element type.
/// @param Subscripts Subscripts.
MDCompositeType *createVectorType(uint64_t Size, uint64_t AlignInBits,
- MDType *Ty, DIArray Subscripts);
+ MDType *Ty, DebugNodeArray Subscripts);
/// createEnumerationType - Create debugging information entry for an
/// enumeration.
/// @param UniqueIdentifier A unique identifier for the enum.
MDCompositeType *createEnumerationType(
MDScope *Scope, StringRef Name, MDFile *File, unsigned LineNumber,
- uint64_t SizeInBits, uint64_t AlignInBits, DIArray Elements,
+ uint64_t SizeInBits, uint64_t AlignInBits, DebugNodeArray Elements,
MDType *UnderlyingType, StringRef UniqueIdentifier = "");
/// createSubroutineType - Create subroutine type.
/// @param Flags E.g.: LValueReference.
/// These flags are used to emit dwarf attributes.
MDSubroutineType *createSubroutineType(MDFile *File,
- DITypeArray ParameterTypes,
+ MDTypeRefArray ParameterTypes,
unsigned Flags = 0);
/// createArtificialType - Create a new MDType* with "artificial" flag set.
/// for a subroutine type.
MDBasicType *createUnspecifiedParameter();
- /// getOrCreateArray - Get a DIArray, create one if required.
- DIArray getOrCreateArray(ArrayRef<Metadata *> Elements);
+ /// getOrCreateArray - Get a DebugNodeArray, create one if required.
+ DebugNodeArray getOrCreateArray(ArrayRef<Metadata *> Elements);
- /// getOrCreateTypeArray - Get a DITypeArray, create one if required.
- DITypeArray getOrCreateTypeArray(ArrayRef<Metadata *> Elements);
+ /// getOrCreateTypeArray - Get a MDTypeRefArray, create one if required.
+ MDTypeRefArray getOrCreateTypeArray(ArrayRef<Metadata *> Elements);
/// getOrCreateSubrange - Create a descriptor for a value range. This
/// implicitly uniques the values returned.
/// If \c T is resolved, but the arrays aren't -- which can happen if \c T
/// has a self-reference -- \a DIBuilder needs to track the array to
/// resolve cycles.
- void replaceArrays(MDCompositeType *&T, DIArray Elements,
- DIArray TParems = DIArray());
+ void replaceArrays(MDCompositeType *&T, DebugNodeArray Elements,
+ DebugNodeArray TParems = DebugNodeArray());
/// \brief Replace a temporary node.
///
/// \brief Maps from type identifier to the actual MDNode.
typedef DenseMap<const MDString *, MDType *> DITypeIdentifierMap;
-typedef DebugNodeArray DIArray;
-typedef MDTypeRefArray DITypeArray;
-
/// \brief Find subprogram that is enclosing this scope.
MDSubprogram *getDISubprogram(const MDNode *Scope);
DIE &ScopeDIE = updateSubprogramScopeDIE(Sub);
// If this is a variadic function, add an unspecified parameter.
- DITypeArray FnArgs = Sub->getType()->getTypeArray();
+ MDTypeRefArray FnArgs = Sub->getType()->getTypeArray();
// Collect lexical scope children first.
// ObjectPointer might be a local (non-argument) local variable if it's a
// Find the __forwarding field and the variable field in the __Block_byref
// struct.
- DIArray Fields = cast<MDCompositeTypeBase>(TmpTy)->getElements();
+ DebugNodeArray Fields = cast<MDCompositeTypeBase>(TmpTy)->getElements();
const MDDerivedType *varField = nullptr;
const MDDerivedType *forwardingField = nullptr;
GlobalValue::getRealLinkageName(LinkageName));
}
-void DwarfUnit::addTemplateParams(DIE &Buffer, DIArray TParams) {
+void DwarfUnit::addTemplateParams(DIE &Buffer, DebugNodeArray TParams) {
// Add template parameters.
for (const auto *Element : TParams) {
if (auto *TTP = dyn_cast<MDTemplateTypeParameter>(Element))
addSourceLine(Buffer, DTy);
}
-void DwarfUnit::constructSubprogramArguments(DIE &Buffer, DITypeArray Args) {
+void DwarfUnit::constructSubprogramArguments(DIE &Buffer, MDTypeRefArray Args) {
for (unsigned i = 1, N = Args.size(); i < N; ++i) {
const MDType *Ty = resolve(Args[i]);
if (!Ty) {
case dwarf::DW_TAG_union_type:
case dwarf::DW_TAG_class_type: {
// Add elements to structure type.
- DIArray Elements = CTy->getElements();
+ DebugNodeArray Elements = CTy->getElements();
for (const auto *Element : Elements) {
if (!Element)
continue;
DIE *IdxTy = getIndexTyDie();
// Add subranges to array type.
- DIArray Elements = CTy->getElements();
+ DebugNodeArray Elements = CTy->getElements();
for (unsigned i = 0, N = Elements.size(); i < N; ++i) {
// FIXME: Should this really be such a loose cast?
if (auto *Element = dyn_cast_or_null<DebugNode>(Elements[i]))
}
void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, const MDCompositeType *CTy) {
- DIArray Elements = CTy->getElements();
+ DebugNodeArray Elements = CTy->getElements();
// Add enumerators to enumeration type.
for (unsigned i = 0, N = Elements.size(); i < N; ++i) {
void addLinkageName(DIE &Die, StringRef LinkageName);
/// \brief Add template parameters in buffer.
- void addTemplateParams(DIE &Buffer, DIArray TParams);
+ void addTemplateParams(DIE &Buffer, DebugNodeArray TParams);
/// \brief Add register operand.
/// \returns false if the register does not exist, e.g., because it was never
void constructContainingTypeDIEs();
/// \brief Construct function argument DIEs.
- void constructSubprogramArguments(DIE &Buffer, DITypeArray Args);
+ void constructSubprogramArguments(DIE &Buffer, MDTypeRefArray Args);
/// Create a DIE with the given Tag, add the DIE to its parent, and
/// call insertDIE if MD is not null.
if (MDTuple *Temp = SP->getVariables().get()) {
const auto &PV = PreservedVariables.lookup(SP);
SmallVector<Metadata *, 4> Variables(PV.begin(), PV.end());
- DIArray AV = getOrCreateArray(Variables);
+ DebugNodeArray AV = getOrCreateArray(Variables);
TempMDTuple(Temp)->replaceAllUsesWith(AV.get());
}
}
MDTemplateValueParameter *
DIBuilder::createTemplateParameterPack(MDScope *Context, StringRef Name,
- MDType *Ty, DIArray Val) {
+ MDType *Ty, DebugNodeArray Val) {
return createTemplateValueParameterHelper(
VMContext, dwarf::DW_TAG_GNU_template_parameter_pack, Context, Name, Ty,
Val.get());
MDCompositeType *DIBuilder::createClassType(
MDScope *Context, StringRef Name, MDFile *File, unsigned LineNumber,
uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits,
- unsigned Flags, MDType *DerivedFrom, DIArray Elements, MDType *VTableHolder,
- MDNode *TemplateParams, StringRef UniqueIdentifier) {
+ unsigned Flags, MDType *DerivedFrom, DebugNodeArray Elements,
+ MDType *VTableHolder, MDNode *TemplateParams, StringRef UniqueIdentifier) {
assert((!Context || isa<MDScope>(Context)) &&
"createClassType should be called with a valid Context");
MDCompositeType *DIBuilder::createStructType(
MDScope *Context, StringRef Name, MDFile *File, unsigned LineNumber,
uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
- MDType *DerivedFrom, DIArray Elements, unsigned RunTimeLang,
+ MDType *DerivedFrom, DebugNodeArray Elements, unsigned RunTimeLang,
MDType *VTableHolder, StringRef UniqueIdentifier) {
auto *R = MDCompositeType::get(
VMContext, dwarf::DW_TAG_structure_type, Name, File, LineNumber,
return R;
}
-MDCompositeType* DIBuilder::createUnionType(MDScope * Scope, StringRef Name,
- MDFile* File, unsigned LineNumber,
- uint64_t SizeInBits,
- uint64_t AlignInBits, unsigned Flags,
- DIArray Elements,
- unsigned RunTimeLang,
- StringRef UniqueIdentifier) {
+MDCompositeType *DIBuilder::createUnionType(
+ MDScope *Scope, StringRef Name, MDFile *File, unsigned LineNumber,
+ uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
+ DebugNodeArray Elements, unsigned RunTimeLang, StringRef UniqueIdentifier) {
auto *R = MDCompositeType::get(
VMContext, dwarf::DW_TAG_union_type, Name, File, LineNumber,
MDScopeRef::get(getNonCompileUnitScope(Scope)), nullptr, SizeInBits,
}
MDSubroutineType *DIBuilder::createSubroutineType(MDFile *File,
- DITypeArray ParameterTypes,
+ MDTypeRefArray ParameterTypes,
unsigned Flags) {
return MDSubroutineType::get(VMContext, Flags, ParameterTypes);
}
MDCompositeType *DIBuilder::createEnumerationType(
MDScope *Scope, StringRef Name, MDFile *File, unsigned LineNumber,
- uint64_t SizeInBits, uint64_t AlignInBits, DIArray Elements,
+ uint64_t SizeInBits, uint64_t AlignInBits, DebugNodeArray Elements,
MDType *UnderlyingType, StringRef UniqueIdentifier) {
auto *CTy = MDCompositeType::get(
VMContext, dwarf::DW_TAG_enumeration_type, Name, File, LineNumber,
}
MDCompositeType *DIBuilder::createArrayType(uint64_t Size, uint64_t AlignInBits,
- MDType *Ty, DIArray Subscripts) {
+ MDType *Ty,
+ DebugNodeArray Subscripts) {
auto *R = MDCompositeType::get(VMContext, dwarf::DW_TAG_array_type, "",
nullptr, 0, nullptr, MDTypeRef::get(Ty), Size,
AlignInBits, 0, 0, Subscripts, 0, nullptr);
MDCompositeType *DIBuilder::createVectorType(uint64_t Size,
uint64_t AlignInBits, MDType *Ty,
- DIArray Subscripts) {
+ DebugNodeArray Subscripts) {
auto *R =
MDCompositeType::get(VMContext, dwarf::DW_TAG_array_type, "", nullptr, 0,
nullptr, MDTypeRef::get(Ty), Size, AlignInBits, 0,
return RetTy;
}
-DIArray DIBuilder::getOrCreateArray(ArrayRef<Metadata *> Elements) {
+DebugNodeArray DIBuilder::getOrCreateArray(ArrayRef<Metadata *> Elements) {
return MDTuple::get(VMContext, Elements);
}
-DITypeArray DIBuilder::getOrCreateTypeArray(ArrayRef<Metadata *> Elements) {
+MDTypeRefArray DIBuilder::getOrCreateTypeArray(ArrayRef<Metadata *> Elements) {
SmallVector<llvm::Metadata *, 16> Elts;
for (unsigned i = 0, e = Elements.size(); i != e; ++i) {
if (Elements[i] && isa<MDNode>(Elements[i]))
else
Elts.push_back(Elements[i]);
}
- return DITypeArray(MDNode::get(VMContext, Elts));
+ return MDTypeRefArray(MDNode::get(VMContext, Elts));
}
MDSubrange *DIBuilder::getOrCreateSubrange(int64_t Lo, int64_t Count) {
trackIfUnresolved(N);
}
-void DIBuilder::replaceArrays(MDCompositeType* &T, DIArray Elements,
- DIArray TParams) {
+void DIBuilder::replaceArrays(MDCompositeType *&T, DebugNodeArray Elements,
+ DebugNodeArray TParams) {
{
TypedTrackingMDRef<MDCompositeType> N(T);
if (Elements)
DITypeIdentifierMap Map;
for (unsigned CUi = 0, CUe = CU_Nodes->getNumOperands(); CUi != CUe; ++CUi) {
auto *CU = cast<MDCompileUnit>(CU_Nodes->getOperand(CUi));
- DIArray Retain = CU->getRetainedTypes();
+ DebugNodeArray Retain = CU->getRetainedTypes();
for (unsigned Ti = 0, Te = Retain.size(); Ti != Te; ++Ti) {
if (!isa<MDCompositeType>(Retain[Ti]))
continue;
// Function DI
auto *File = DBuilder.createFile("filename.c", "/file/dir/");
- DITypeArray ParamTypes = DBuilder.getOrCreateTypeArray(None);
+ MDTypeRefArray ParamTypes = DBuilder.getOrCreateTypeArray(None);
MDSubroutineType *FuncType =
DBuilder.createSubroutineType(File, ParamTypes);
auto *CU =