mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
DebugInfo: Use the scope of the function declaration, if any, to name a function in DWARF pubnames
This ensures that member functions, for example, are entered into pubnames with their fully qualified name, rather than inside the global namespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210379 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ebcf48cf9e
commit
8ef9d22f5b
@ -531,8 +531,7 @@ void DwarfDebug::constructAbstractSubprogramScopeDIE(DwarfCompileUnit &TheCU,
|
||||
// shouldn't be found by lookup.
|
||||
AbsDef = &SPCU.createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE,
|
||||
DIDescriptor());
|
||||
SPCU.applySubprogramAttributes(SP, *AbsDef);
|
||||
SPCU.addGlobalName(SP.getName(), *AbsDef, resolve(SP.getContext()));
|
||||
SPCU.applySubprogramAttributesToDefinition(SP, *AbsDef);
|
||||
|
||||
SPCU.addUInt(*AbsDef, dwarf::DW_AT_inline, None, dwarf::DW_INL_inlined);
|
||||
createAndAddScopeChildren(SPCU, Scope, *AbsDef);
|
||||
@ -811,8 +810,7 @@ void DwarfDebug::finishSubprogramDefinitions() {
|
||||
// inlined versions during codegen.
|
||||
D = SPCU->getOrCreateSubprogramDIE(SP);
|
||||
// And attach the attributes
|
||||
SPCU->applySubprogramAttributes(SP, *D);
|
||||
SPCU->addGlobalName(SP.getName(), *D, resolve(SP.getContext()));
|
||||
SPCU->applySubprogramAttributesToDefinition(SP, *D);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1401,6 +1401,13 @@ DIE *DwarfUnit::getOrCreateSubprogramDIE(DISubprogram SP) {
|
||||
return &SPDie;
|
||||
}
|
||||
|
||||
void DwarfUnit::applySubprogramAttributesToDefinition(DISubprogram SP, DIE &SPDie) {
|
||||
DISubprogram SPDecl = SP.getFunctionDeclaration();
|
||||
DIScope Context = resolve(SPDecl ? SPDecl.getContext() : SP.getContext());
|
||||
applySubprogramAttributes(SP, SPDie);
|
||||
addGlobalName(SP.getName(), SPDie, Context);
|
||||
}
|
||||
|
||||
void DwarfUnit::applySubprogramAttributes(DISubprogram SP, DIE &SPDie) {
|
||||
DIE *DeclDie = nullptr;
|
||||
StringRef DeclLinkageName;
|
||||
|
@ -400,6 +400,7 @@ public:
|
||||
DIE *getOrCreateSubprogramDIE(DISubprogram SP);
|
||||
|
||||
void applySubprogramAttributes(DISubprogram SP, DIE &SPDie);
|
||||
void applySubprogramAttributesToDefinition(DISubprogram SP, DIE &SPDie);
|
||||
|
||||
/// getOrCreateTypeDIE - Find existing DIE or create new DIE for the
|
||||
/// given DIType.
|
||||
|
@ -44,15 +44,13 @@
|
||||
|
||||
; Check for each name in the output.
|
||||
; LINUX-DAG: "ns"
|
||||
; FIXME: This should be C::static_member_function
|
||||
; LINUX-DAG: "static_member_function"
|
||||
; LINUX-DAG: "C::static_member_function"
|
||||
; LINUX-DAG: "global_variable"
|
||||
; LINUX-DAG: "ns::global_namespace_variable"
|
||||
; LINUX-DAG: "ns::global_namespace_function"
|
||||
; LINUX-DAG: "global_function"
|
||||
; LINUX-DAG: "C::static_member_variable"
|
||||
; FIXME: This should be C::member_function
|
||||
; LINUX-DAG: "member_function"
|
||||
; LINUX-DAG: "C::member_function"
|
||||
|
||||
%struct.C = type { i8 }
|
||||
|
||||
|
@ -41,15 +41,13 @@
|
||||
|
||||
; Check for each name in the output.
|
||||
; CHECK-DAG: "ns"
|
||||
; FIXME: This should be C::static_member_function
|
||||
; CHECK-DAG: "static_member_function"
|
||||
; CHECK-DAG: "C::static_member_function"
|
||||
; CHECK-DAG: "global_variable"
|
||||
; CHECK-DAG: "ns::global_namespace_variable"
|
||||
; CHECK-DAG: "ns::global_namespace_function"
|
||||
; CHECK-DAG: "global_function"
|
||||
; CHECK-DAG: "C::static_member_variable"
|
||||
; FIXME: This should be C::member_function
|
||||
; CHECK-DAG: "member_function"
|
||||
; CHECK-DAG: "C::member_function"
|
||||
|
||||
%struct.C = type { i8 }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user