mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 00:39:36 +00:00
Simplify. Eliminate unneeded debug_loc entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104785 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8b3ca84a8d
commit
80250686d5
@ -2210,9 +2210,10 @@ void DwarfDebug::collectVariableInfo(const MachineFunction *MF) {
|
||||
}
|
||||
|
||||
// handle multiple DBG_VALUE instructions describing one variable.
|
||||
RegVar->setDotDebugLocOffset(DotDebugLocEntries.size());
|
||||
if (DotDebugLocEntries.empty())
|
||||
DotDebugLocEntries.push_back(DotDebugLocEntry());
|
||||
RegVar->setDotDebugLocOffset(0);
|
||||
else
|
||||
RegVar->setDotDebugLocOffset(DotDebugLocEntries.size());
|
||||
const MachineInstr *Begin = NULL;
|
||||
const MachineInstr *End = NULL;
|
||||
for (SmallVector<const MachineInstr *, 4>::iterator
|
||||
@ -3481,23 +3482,22 @@ void DwarfDebug::emitDebugStr() {
|
||||
/// emitDebugLoc - Emit visible names into a debug loc section.
|
||||
///
|
||||
void DwarfDebug::emitDebugLoc() {
|
||||
if (DotDebugLocEntries.empty())
|
||||
return;
|
||||
|
||||
// Start the dwarf loc section.
|
||||
Asm->OutStreamer.SwitchSection(
|
||||
Asm->getObjFileLowering().getDwarfLocSection());
|
||||
unsigned char Size = Asm->getTargetData().getPointerSize();
|
||||
unsigned index = 0;
|
||||
bool needMarker = true;
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_loc", 0));
|
||||
unsigned index = 1;
|
||||
for (SmallVector<DotDebugLocEntry, 4>::iterator I = DotDebugLocEntries.begin(),
|
||||
E = DotDebugLocEntries.end(); I != E; ++I, ++index) {
|
||||
DotDebugLocEntry Entry = *I;
|
||||
if (needMarker) {
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_loc", index));
|
||||
needMarker = false;
|
||||
}
|
||||
if (Entry.isEmpty()) {
|
||||
Asm->OutStreamer.EmitIntValue(0, Size, /*addrspace*/0);
|
||||
Asm->OutStreamer.EmitIntValue(0, Size, /*addrspace*/0);
|
||||
needMarker = true;
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("debug_loc", index));
|
||||
} else {
|
||||
Asm->OutStreamer.EmitSymbolValue(Entry.Begin, Size, 0);
|
||||
Asm->OutStreamer.EmitSymbolValue(Entry.End, Size, 0);
|
||||
|
@ -55,7 +55,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
|
||||
!29 = metadata !{i32 524299, metadata !9, i32 17, i32 0} ; [ DW_TAG_lexical_block ]
|
||||
!30 = metadata !{i32 19, i32 0, metadata !29, null}
|
||||
|
||||
; CHECK: Ldebug_loc1
|
||||
; CHECK: Ldebug_loc0:
|
||||
; CHECK-NEXT: .quad Lfunc_begin0
|
||||
; CHECK-NEXT: .quad Ltmp3
|
||||
; CHECK-NEXT: .short 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -O2 < %s | grep debug_loc13
|
||||
; Test to check .debug_loc support. This test case emits 14 debug_loc entries.
|
||||
; RUN: llc -O2 < %s | grep debug_loc12
|
||||
; Test to check .debug_loc support. This test case emits 13 debug_loc entries.
|
||||
|
||||
%0 = type { double }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user