mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-13 08:25:27 +00:00
Fix the output of the DW_TAG_friend tag to include DW_AT_friend
and not the rest of the member tag. Fixes PR11695 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153570 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -628,7 +628,8 @@ DIE *CompileUnit::getOrCreateTypeDIE(const MDNode *TyNode) {
|
||||
}
|
||||
|
||||
/// addType - Add a new type attribute to the specified entity.
|
||||
void CompileUnit::addType(DIE *Entity, DIType Ty) {
|
||||
void CompileUnit::addType(DIE *Entity, DIType Ty,
|
||||
unsigned Attribute) {
|
||||
if (!Ty.Verify())
|
||||
return;
|
||||
|
||||
@@ -636,7 +637,7 @@ void CompileUnit::addType(DIE *Entity, DIType Ty) {
|
||||
DIEEntry *Entry = getDIEEntry(Ty);
|
||||
// If it exists then use the existing value.
|
||||
if (Entry) {
|
||||
Entity->addValue(dwarf::DW_AT_type, dwarf::DW_FORM_ref4, Entry);
|
||||
Entity->addValue(Attribute, dwarf::DW_FORM_ref4, Entry);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -646,7 +647,7 @@ void CompileUnit::addType(DIE *Entity, DIType Ty) {
|
||||
// Set up proxy.
|
||||
Entry = createDIEEntry(Buffer);
|
||||
insertDIEEntry(Ty, Entry);
|
||||
Entity->addValue(dwarf::DW_AT_type, dwarf::DW_FORM_ref4, Entry);
|
||||
Entity->addValue(Attribute, dwarf::DW_FORM_ref4, Entry);
|
||||
|
||||
// If this is a complete composite type then include it in the
|
||||
// list of global types.
|
||||
@@ -826,9 +827,14 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
|
||||
addUInt(ElemDie, dwarf::DW_AT_declaration, dwarf::DW_FORM_flag, 1);
|
||||
addUInt(ElemDie, dwarf::DW_AT_external, dwarf::DW_FORM_flag, 1);
|
||||
addSourceLine(ElemDie, DV);
|
||||
} else if (Element.isDerivedType())
|
||||
ElemDie = createMemberDIE(DIDerivedType(Element));
|
||||
else if (Element.isObjCProperty()) {
|
||||
} else if (Element.isDerivedType()) {
|
||||
DIDerivedType DDTy(Element);
|
||||
if (DDTy.getTag() == dwarf::DW_TAG_friend) {
|
||||
ElemDie = new DIE(dwarf::DW_TAG_friend);
|
||||
addType(ElemDie, DDTy.getTypeDerivedFrom(), dwarf::DW_AT_friend);
|
||||
} else
|
||||
ElemDie = createMemberDIE(DIDerivedType(Element));
|
||||
} else if (Element.isObjCProperty()) {
|
||||
DIObjCProperty Property(Element);
|
||||
ElemDie = new DIE(Property.getTag());
|
||||
StringRef PropertyName = Property.getObjCPropertyName();
|
||||
|
Reference in New Issue
Block a user