mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
Move CompileUnit::getOrCreateNameSpace() and CompileUnit::addPubType() from DwarfDebug.cpp to DwarfCompileUnit.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130991 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -585,6 +585,27 @@ void CompileUnit::addType(DIE *Entity, DIType Ty) {
|
|||||||
Entity->addValue(dwarf::DW_AT_type, dwarf::DW_FORM_ref4, Entry);
|
Entity->addValue(dwarf::DW_AT_type, dwarf::DW_FORM_ref4, Entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// addPubTypes - Add type for pubtypes section.
|
||||||
|
void CompileUnit::addPubTypes(DISubprogram SP) {
|
||||||
|
DICompositeType SPTy = SP.getType();
|
||||||
|
unsigned SPTag = SPTy.getTag();
|
||||||
|
if (SPTag != dwarf::DW_TAG_subroutine_type)
|
||||||
|
return;
|
||||||
|
|
||||||
|
DIArray Args = SPTy.getTypeArray();
|
||||||
|
for (unsigned i = 0, e = Args.getNumElements(); i != e; ++i) {
|
||||||
|
DIType ATy(Args.getElement(i));
|
||||||
|
if (!ATy.Verify())
|
||||||
|
continue;
|
||||||
|
DICompositeType CATy = getDICompositeType(ATy);
|
||||||
|
if (DIDescriptor(CATy).Verify() && !CATy.getName().empty()
|
||||||
|
&& !CATy.isForwardDecl()) {
|
||||||
|
if (DIEEntry *Entry = getDIEEntry(CATy))
|
||||||
|
addGlobalType(CATy.getName(), Entry->getEntry());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// constructTypeDIE - Construct basic type die from DIBasicType.
|
/// constructTypeDIE - Construct basic type die from DIBasicType.
|
||||||
void CompileUnit::constructTypeDIE(DIE &Buffer, DIBasicType BTy) {
|
void CompileUnit::constructTypeDIE(DIE &Buffer, DIBasicType BTy) {
|
||||||
// Get core information.
|
// Get core information.
|
||||||
@ -809,6 +830,20 @@ CompileUnit::getOrCreateTemplateValueParameterDIE(DITemplateValueParameter TPV)
|
|||||||
return ParamDIE;
|
return ParamDIE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// getOrCreateNameSpace - Create a DIE for DINameSpace.
|
||||||
|
DIE *CompileUnit::getOrCreateNameSpace(DINameSpace NS) {
|
||||||
|
DIE *NDie = getDIE(NS);
|
||||||
|
if (NDie)
|
||||||
|
return NDie;
|
||||||
|
NDie = new DIE(dwarf::DW_TAG_namespace);
|
||||||
|
insertDIE(NS, NDie);
|
||||||
|
if (!NS.getName().empty())
|
||||||
|
addString(NDie, dwarf::DW_AT_name, dwarf::DW_FORM_string, NS.getName());
|
||||||
|
addSourceLine(NDie, NS);
|
||||||
|
addToContextOwner(NDie, NS.getContext());
|
||||||
|
return NDie;
|
||||||
|
}
|
||||||
|
|
||||||
/// constructSubrangeDIE - Construct subrange DIE from DISubrange.
|
/// constructSubrangeDIE - Construct subrange DIE from DISubrange.
|
||||||
void CompileUnit::constructSubrangeDIE(DIE &Buffer, DISubrange SR, DIE *IndexTy){
|
void CompileUnit::constructSubrangeDIE(DIE &Buffer, DISubrange SR, DIE *IndexTy){
|
||||||
DIE *DW_Subrange = new DIE(dwarf::DW_TAG_subrange_type);
|
DIE *DW_Subrange = new DIE(dwarf::DW_TAG_subrange_type);
|
||||||
|
@ -748,26 +748,6 @@ DIE *DwarfDebug::constructVariableDIE(DbgVariable *DV, DbgScope *Scope) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompileUnit::addPubTypes(DISubprogram SP) {
|
|
||||||
DICompositeType SPTy = SP.getType();
|
|
||||||
unsigned SPTag = SPTy.getTag();
|
|
||||||
if (SPTag != dwarf::DW_TAG_subroutine_type)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DIArray Args = SPTy.getTypeArray();
|
|
||||||
for (unsigned i = 0, e = Args.getNumElements(); i != e; ++i) {
|
|
||||||
DIType ATy(Args.getElement(i));
|
|
||||||
if (!ATy.Verify())
|
|
||||||
continue;
|
|
||||||
DICompositeType CATy = getDICompositeType(ATy);
|
|
||||||
if (DIDescriptor(CATy).Verify() && !CATy.getName().empty()
|
|
||||||
&& !CATy.isForwardDecl()) {
|
|
||||||
if (DIEEntry *Entry = getDIEEntry(CATy))
|
|
||||||
addGlobalType(CATy.getName(), Entry->getEntry());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// constructScopeDIE - Construct a DIE for this scope.
|
/// constructScopeDIE - Construct a DIE for this scope.
|
||||||
DIE *DwarfDebug::constructScopeDIE(DbgScope *Scope) {
|
DIE *DwarfDebug::constructScopeDIE(DbgScope *Scope) {
|
||||||
if (!Scope || !Scope->getScopeNode())
|
if (!Scope || !Scope->getScopeNode())
|
||||||
@ -860,20 +840,6 @@ unsigned DwarfDebug::GetOrCreateSourceID(StringRef FileName,
|
|||||||
return SrcId;
|
return SrcId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getOrCreateNameSpace - Create a DIE for DINameSpace.
|
|
||||||
DIE *CompileUnit::getOrCreateNameSpace(DINameSpace NS) {
|
|
||||||
DIE *NDie = getDIE(NS);
|
|
||||||
if (NDie)
|
|
||||||
return NDie;
|
|
||||||
NDie = new DIE(dwarf::DW_TAG_namespace);
|
|
||||||
insertDIE(NS, NDie);
|
|
||||||
if (!NS.getName().empty())
|
|
||||||
addString(NDie, dwarf::DW_AT_name, dwarf::DW_FORM_string, NS.getName());
|
|
||||||
addSourceLine(NDie, NS);
|
|
||||||
addToContextOwner(NDie, NS.getContext());
|
|
||||||
return NDie;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// constructCompileUnit - Create new CompileUnit for the given
|
/// constructCompileUnit - Create new CompileUnit for the given
|
||||||
/// metadata node with tag DW_TAG_compile_unit.
|
/// metadata node with tag DW_TAG_compile_unit.
|
||||||
void DwarfDebug::constructCompileUnit(const MDNode *N) {
|
void DwarfDebug::constructCompileUnit(const MDNode *N) {
|
||||||
|
Reference in New Issue
Block a user