DebugInfo: Refactor high_pc/low_pc construction into reusable function
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 7 Mar 2014 18:49:45 +0000 (18:49 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 7 Mar 2014 18:49:45 +0000 (18:49 +0000)
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

lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/CodeGen/AsmPrinter/DwarfDebug.h

index 882720fcae6badceb53d7b2c0330cdf7154ce5af..e9171b00eaa414858897576f252cfd0aa4f7d6f4 100644 (file)
@@ -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);
+}
index dc1607ab7edb4af80c1eba54a02349fe3c0a6df7..1373e96d009ea95407211061b076ad00aeab5ad9 100644 (file)
@@ -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.