diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-03-07 18:49:45 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-03-07 18:49:45 +0000 |
commit | 5ba79a995271a05a8df3a4d68d1d9ee19fbe6351 (patch) | |
tree | 897124cf0e9905d2be88b091b869d0a43007aeaf /lib | |
parent | f456d37c4f6b70a5e5bd272fe9e2b01ab6ee9417 (diff) | |
download | llvm-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.cpp | 16 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.h | 3 |
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. |