summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorEugene Leviant <eleviant@accesssoftek.com>2019-02-27 14:46:59 +0000
committerEugene Leviant <eleviant@accesssoftek.com>2019-02-27 14:46:59 +0000
commit7f78d4712f91d034e1850d0a0030a090fbe14999 (patch)
tree59f72eb90152750f4ce66eef406d82092550f62f /llvm/lib
parentd73a67a799a116857b4e316814c6e8ee5c7b13a6 (diff)
downloadbcm5719-llvm-7f78d4712f91d034e1850d0a0030a090fbe14999.tar.gz
bcm5719-llvm-7f78d4712f91d034e1850d0a0030a090fbe14999.zip
[DebugInfo] Apply subprogram attributes on behalf of owner CU
When using full LTO it is possible that template function definition DIE is bound to one compilation unit and it's declaration to another. We should add function declaration attributes on behalf of its owner CU otherwise we may end up with malformed file identifier in function declaration DW_AT_decl_file attribute. Differential revision: https://reviews.llvm.org/D58538 llvm-svn: 354978
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DIE.cpp2
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp3
2 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DIE.cpp b/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
index a07b5477303..dfc4156243d 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
@@ -211,7 +211,7 @@ const DIE *DIE::getUnitDie() const {
return nullptr;
}
-const DIEUnit *DIE::getUnit() const {
+DIEUnit *DIE::getUnit() const {
const DIE *UnitDie = getUnitDie();
if (UnitDie)
return UnitDie->Owner.dyn_cast<DIEUnit*>();
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
index 8534bd12ba2..d0a779c57b8 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
@@ -1106,7 +1106,8 @@ DIE *DwarfUnit::getOrCreateSubprogramDIE(const DISubprogram *SP, bool Minimal) {
if (SP->isDefinition())
return &SPDie;
- applySubprogramAttributes(SP, SPDie);
+ static_cast<DwarfUnit *>(SPDie.getUnit())
+ ->applySubprogramAttributes(SP, SPDie);
return &SPDie;
}
OpenPOWER on IntegriCloud