summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2011-05-03 21:50:34 +0000
committerDevang Patel <dpatel@apple.com>2011-05-03 21:50:34 +0000
commit543596d57b3b215279af9aa84cbfa3c69198d02d (patch)
tree97d9a18817c84be7ce9db09b8321c679ca03a5fb /llvm/lib/CodeGen
parentf6daf94ab2f78a08f9ebefa8644b7f66c095b2e2 (diff)
downloadbcm5719-llvm-543596d57b3b215279af9aa84cbfa3c69198d02d.tar.gz
bcm5719-llvm-543596d57b3b215279af9aa84cbfa3c69198d02d.zip
Even if the subprogram is going to use AT_specification, emit DW_AT_MIPS_linkage_name. This helps gdb and fixes var-path-expr.exp regression reported by gdb testsuite.
llvm-svn: 130794
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 3bff71daf5d..48f3b0bf4c9 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -332,6 +332,11 @@ DIE *DwarfDebug::createSubprogramDIE(DISubprogram SP) {
// Add function template parameters.
SPCU->addTemplateParams(*SPDie, SP.getTemplateParams());
+ StringRef LinkageName = SP.getLinkageName();
+ if (!LinkageName.empty())
+ SPCU->addString(SPDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
+ getRealLinkageName(LinkageName));
+
// If this DIE is going to refer declaration info using AT_specification
// then there is no need to add other attributes.
if (SP.getFunctionDeclaration().isSubprogram())
@@ -342,11 +347,6 @@ DIE *DwarfDebug::createSubprogramDIE(DISubprogram SP) {
SPCU->addString(SPDie, dwarf::DW_AT_name, dwarf::DW_FORM_string,
SP.getName());
- StringRef LinkageName = SP.getLinkageName();
- if (!LinkageName.empty())
- SPCU->addString(SPDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
- getRealLinkageName(LinkageName));
-
SPCU->addSourceLine(SPDie, SP);
if (SP.isPrototyped())
OpenPOWER on IntegriCloud