summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-03-07 18:49:45 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-03-07 18:49:45 +0000
commit5ba79a995271a05a8df3a4d68d1d9ee19fbe6351 (patch)
tree897124cf0e9905d2be88b091b869d0a43007aeaf /lib
parentf456d37c4f6b70a5e5bd272fe9e2b01ab6ee9417 (diff)
downloadllvm-5ba79a995271a05a8df3a4d68d1d9ee19fbe6351.tar.gz
llvm-5ba79a995271a05a8df3a4d68d1d9ee19fbe6351.tar.bz2
llvm-5ba79a995271a05a8df3a4d68d1d9ee19fbe6351.tar.xz
DebugInfo: Refactor high_pc/low_pc construction into reusable function
For incoming improvements to inlined functions and lexical blocks suggested by Adrian Prantl in review of r203187. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203263 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.cpp16
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.h3
2 files changed, 13 insertions, 6 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 882720fcae..e9171b00ea 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -412,12 +412,7 @@ DIE *DwarfDebug::updateSubprogramScopeDIE(DwarfCompileUnit *SPCU,
}
}
- SPCU->addLabelAddress(SPDie, dwarf::DW_AT_low_pc, FunctionBeginSym);
- if (DwarfVersion < 4 || Triple(Asm->getTargetTriple()).isOSDarwin())
- SPCU->addLabelAddress(SPDie, dwarf::DW_AT_high_pc, FunctionEndSym);
- else
- SPCU->addLabelDelta(SPDie, dwarf::DW_AT_high_pc, FunctionEndSym,
- FunctionBeginSym);
+ attachLowHighPC(SPCU, SPDie, FunctionBeginSym, FunctionEndSym);
const TargetRegisterInfo *RI = Asm->TM.getRegisterInfo();
MachineLocation Location(RI->getFrameRegister(*Asm->MF));
@@ -2977,3 +2972,12 @@ void DwarfDebug::addDwarfTypeUnitType(DwarfCompileUnit &CU,
CU.addDIETypeSignature(RefDie, *NewTU);
}
+
+void DwarfDebug::attachLowHighPC(DwarfCompileUnit *Unit, DIE *D,
+ MCSymbol *Begin, MCSymbol *End) {
+ Unit->addLabelAddress(D, dwarf::DW_AT_low_pc, Begin);
+ if (DwarfVersion < 4 || Triple(Asm->getTargetTriple()).isOSDarwin())
+ Unit->addLabelAddress(D, dwarf::DW_AT_high_pc, End);
+ else
+ Unit->addLabelDelta(D, dwarf::DW_AT_high_pc, End, Begin);
+}
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h
index dc1607ab7e..1373e96d00 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -680,6 +680,9 @@ class DwarfDebug : public AsmPrinterHandler {
/// \brief Return Label immediately following the instruction.
MCSymbol *getLabelAfterInsn(const MachineInstr *MI);
+ void attachLowHighPC(DwarfCompileUnit *Unit, DIE *D, MCSymbol *Begin,
+ MCSymbol *End);
+
public:
//===--------------------------------------------------------------------===//
// Main entry points.