mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-26 20:57:15 +00:00
Sink DwarfDebug::attachLowHighPC into DwarfCompileUnit
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
This commit is contained in:
parent
a2ec9db66b
commit
2c9ba7b7b1
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
Loading…
x
Reference in New Issue
Block a user