Sink DwarfDebug::attachLowHighPC into DwarfCompileUnit
authorDavid Blaikie <dblaikie@gmail.com>
Sat, 4 Oct 2014 15:58:47 +0000 (15:58 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Sat, 4 Oct 2014 15:58:47 +0000 (15:58 +0000)
One of many things to sink down into DwarfCompileUnit to allow handling
of subprograms in both the skeleton and dwo CU under Fission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219058 91177308-0d34-0410-b5e6-96231b3b80d8

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

index b7a56e32513af74edb6e56a85697997b7c044777..4184a0f021a9237c150d8f6a5865f827f1451492 100644 (file)
@@ -274,4 +274,18 @@ void DwarfCompileUnit::applyStmtList(DIE &D) {
              UnitDie.getValues()[stmtListIndex]);
 }
 
+void DwarfCompileUnit::attachLowHighPC(DIE &D, const MCSymbol *Begin,
+                                       const MCSymbol *End) {
+  assert(Begin && "Begin label should not be null!");
+  assert(End && "End label should not be null!");
+  assert(Begin->isDefined() && "Invalid starting label");
+  assert(End->isDefined() && "Invalid end label");
+
+  addLabelAddress(D, dwarf::DW_AT_low_pc, Begin);
+  if (DD->getDwarfVersion() < 4)
+    addLabelAddress(D, dwarf::DW_AT_high_pc, End);
+  else
+    addLabelDelta(D, dwarf::DW_AT_high_pc, End, Begin);
+}
+
 } // end llvm namespace
index bced5335e288356406d456a51c29db476d65471f..85fa6c0b5b885bd70c5d3a8e18a2ccd446f4ff38 100644 (file)
@@ -60,6 +60,8 @@ public:
 
   /// addRange - Add an address range to the list of ranges for this unit.
   void addRange(RangeSpan Range);
+
+  void attachLowHighPC(DIE &D, const MCSymbol *Begin, const MCSymbol *End);
 };
 
 } // end llvm namespace
index a19750a4904edf0fb888775178dac3bae48bfd9b..5f2d15e257ec9d979fd029a2a849d7b6b369bc86 100644 (file)
@@ -318,7 +318,7 @@ DIE &DwarfDebug::updateSubprogramScopeDIE(DwarfCompileUnit &SPCU,
                                           DISubprogram SP) {
   DIE *SPDie = SPCU.getOrCreateSubprogramDIE(SP);
 
-  attachLowHighPC(SPCU, *SPDie, FunctionBeginSym, FunctionEndSym);
+  SPCU.attachLowHighPC(*SPDie, FunctionBeginSym, FunctionEndSym);
   if (!CurFn->getTarget().Options.DisableFramePointerElim(*CurFn))
     SPCU.addFlag(*SPDie, dwarf::DW_AT_APPLE_omit_frame_ptr);
 
@@ -394,8 +394,8 @@ void DwarfDebug::attachRangesOrLowHighPC(DwarfCompileUnit &TheCU, DIE &Die,
                                     const SmallVectorImpl<InsnRange> &Ranges) {
   assert(!Ranges.empty());
   if (Ranges.size() == 1)
-    attachLowHighPC(TheCU, Die, getLabelBeforeInsn(Ranges.front().first),
-                    getLabelAfterInsn(Ranges.front().second));
+    TheCU.attachLowHighPC(Die, getLabelBeforeInsn(Ranges.front().first),
+                          getLabelAfterInsn(Ranges.front().second));
   else
     addScopeRangeList(TheCU, Die, Ranges);
 }
@@ -977,7 +977,7 @@ void DwarfDebug::finalizeModuleInfo() {
                     0);
         } else {
           RangeSpan &Range = TheU->getRanges().back();
-          attachLowHighPC(U, U.getUnitDie(), Range.getStart(), Range.getEnd());
+          U.attachLowHighPC(U.getUnitDie(), Range.getStart(), Range.getEnd());
         }
       }
     }
@@ -2636,20 +2636,6 @@ void DwarfDebug::addDwarfTypeUnitType(DwarfCompileUnit &CU,
   CU.addDIETypeSignature(RefDie, NewTU);
 }
 
-void DwarfDebug::attachLowHighPC(DwarfCompileUnit &Unit, DIE &D,
-                                 const MCSymbol *Begin, const MCSymbol *End) {
-  assert(Begin && "Begin label should not be null!");
-  assert(End && "End label should not be null!");
-  assert(Begin->isDefined() && "Invalid starting label");
-  assert(End->isDefined() && "Invalid end label");
-
-  Unit.addLabelAddress(D, dwarf::DW_AT_low_pc, Begin);
-  if (DwarfVersion < 4)
-    Unit.addLabelAddress(D, dwarf::DW_AT_high_pc, End);
-  else
-    Unit.addLabelDelta(D, dwarf::DW_AT_high_pc, End, Begin);
-}
-
 // Accelerator table mutators - add each name along with its companion
 // DIE to the proper table while ensuring that the name that we're going
 // to reference is in the string table. We do this since the names we
index 1432ecd58ae78bcc16d6e7a4d3281e5b29a6c97b..92c558e17f516b61598780ca824c8870f6b9f0c1 100644 (file)
@@ -567,8 +567,6 @@ class DwarfDebug : public AsmPrinterHandler {
 
   void attachRangesOrLowHighPC(DwarfCompileUnit &Unit, DIE &D,
                                const SmallVectorImpl<InsnRange> &Ranges);
-  void attachLowHighPC(DwarfCompileUnit &Unit, DIE &D, const MCSymbol *Begin,
-                       const MCSymbol *End);
 
 public:
   //===--------------------------------------------------------------------===//