mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 05:32:25 +00:00
DebugInfo: Emit DW_TAG_subprogram's DW_AT_high_pc as an offset from the low_pc
This removes a relocation from each subprogram, reducing link times, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203187 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e2bb4f48ad
commit
34fa5640b8
@ -413,7 +413,8 @@ DIE *DwarfDebug::updateSubprogramScopeDIE(DwarfCompileUnit *SPCU,
|
||||
}
|
||||
|
||||
SPCU->addLabelAddress(SPDie, dwarf::DW_AT_low_pc, FunctionBeginSym);
|
||||
SPCU->addLabelAddress(SPDie, dwarf::DW_AT_high_pc, FunctionEndSym);
|
||||
SPCU->addLabelDelta(SPDie, dwarf::DW_AT_high_pc, FunctionEndSym,
|
||||
FunctionBeginSym);
|
||||
|
||||
const TargetRegisterInfo *RI = Asm->TM.getRegisterInfo();
|
||||
MachineLocation Location(RI->getFrameRegister(*Asm->MF));
|
||||
|
@ -320,6 +320,12 @@ void DwarfUnit::addSectionDelta(DIE *Die, dwarf::Attribute Attribute,
|
||||
Die->addValue(Attribute, dwarf::DW_FORM_data4, Value);
|
||||
}
|
||||
|
||||
void DwarfUnit::addLabelDelta(DIE *Die, dwarf::Attribute Attribute,
|
||||
const MCSymbol *Hi, const MCSymbol *Lo) {
|
||||
DIEValue *Value = new (DIEValueAllocator) DIEDelta(Hi, Lo);
|
||||
Die->addValue(Attribute, dwarf::DW_FORM_data4, Value);
|
||||
}
|
||||
|
||||
/// addDIEEntry - Add a DIE attribute data and value.
|
||||
///
|
||||
void DwarfUnit::addDIEEntry(DIE *Die, dwarf::Attribute Attribute, DIE *Entry) {
|
||||
|
@ -359,6 +359,10 @@ public:
|
||||
void addSectionDelta(DIE *Die, dwarf::Attribute Attribute, const MCSymbol *Hi,
|
||||
const MCSymbol *Lo);
|
||||
|
||||
/// addLabelDelta - Add a label delta attribute data and value.
|
||||
void addLabelDelta(DIE *Die, dwarf::Attribute Attribute, const MCSymbol *Hi,
|
||||
const MCSymbol *Lo);
|
||||
|
||||
/// addDIEEntry - Add a DIE attribute data and value.
|
||||
void addDIEEntry(DIE *Die, dwarf::Attribute Attribute, DIE *Entry);
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
; A couple of ABS64s similarly:
|
||||
|
||||
; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
; CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000008)
|
||||
; CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000008)
|
||||
|
||||
define i32 @main() nounwind {
|
||||
ret i32 0, !dbg !8
|
||||
|
@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
target triple = "x86_64-apple-darwin10.0.0"
|
||||
;Radar 8950491
|
||||
|
||||
;CHECK: .long Lset5
|
||||
;CHECK: .long Lset6
|
||||
;CHECK-NEXT: ## DW_AT_decl_file
|
||||
;CHECK-NEXT: ## DW_AT_decl_line
|
||||
;CHECK-NEXT: ## DW_AT_type
|
||||
|
Loading…
Reference in New Issue
Block a user