Debug info: Store the DIVariable in DebugLocEntry also for constants,

so DwarfDebug::emitDebugLocEntry can emit them with the correct signedness.

rdar://problem/15928306

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206042 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Adrian Prantl 2014-04-11 17:49:47 +00:00
parent d879166376
commit c6db0bdef2
5 changed files with 17 additions and 15 deletions

View File

@ -76,20 +76,20 @@ public:
EntryKind = E_Location;
}
DebugLocEntry(const MCSymbol *B, const MCSymbol *E, int64_t i,
const DwarfCompileUnit *U)
: Begin(B), End(E), Variable(0), Unit(U) {
const MDNode *V, const DwarfCompileUnit *U)
: Begin(B), End(E), Variable(V), Unit(U) {
Constants.Int = i;
EntryKind = E_Integer;
}
DebugLocEntry(const MCSymbol *B, const MCSymbol *E, const ConstantFP *FPtr,
const DwarfCompileUnit *U)
: Begin(B), End(E), Variable(0), Unit(U) {
const MDNode *V, const DwarfCompileUnit *U)
: Begin(B), End(E), Variable(V), Unit(U) {
Constants.CFP = FPtr;
EntryKind = E_ConstantFP;
}
DebugLocEntry(const MCSymbol *B, const MCSymbol *E, const ConstantInt *IPtr,
const DwarfCompileUnit *U)
: Begin(B), End(E), Variable(0), Unit(U) {
const MDNode *V, const DwarfCompileUnit *U)
: Begin(B), End(E), Variable(V), Unit(U) {
Constants.CIP = IPtr;
EntryKind = E_ConstantInt;
}

View File

@ -1212,11 +1212,13 @@ static DebugLocEntry getDebugLocEntry(AsmPrinter *Asm,
return DebugLocEntry(FLabel, SLabel, MLoc, Var, Unit);
}
if (MI->getOperand(0).isImm())
return DebugLocEntry(FLabel, SLabel, MI->getOperand(0).getImm(), Unit);
return DebugLocEntry(FLabel, SLabel, MI->getOperand(0).getImm(), Var, Unit);
if (MI->getOperand(0).isFPImm())
return DebugLocEntry(FLabel, SLabel, MI->getOperand(0).getFPImm(), Unit);
return DebugLocEntry(FLabel, SLabel, MI->getOperand(0).getFPImm(),
Var, Unit);
if (MI->getOperand(0).isCImm())
return DebugLocEntry(FLabel, SLabel, MI->getOperand(0).getCImm(), Unit);
return DebugLocEntry(FLabel, SLabel, MI->getOperand(0).getCImm(),
Var, Unit);
llvm_unreachable("Unexpected 3 operand DBG_VALUE instruction!");
}

View File

@ -13,7 +13,7 @@
target triple = "x86_64-apple-darwin10.0.0"
;CHECK: ## DW_OP_constu
;CHECK: ## DW_OP_consts
;CHECK-NEXT: .byte 42
define i32 @foobar() nounwind readonly noinline ssp {
entry:

View File

@ -25,14 +25,14 @@
; CHECK: DW_AT_location [DW_FORM_data4] ([[LOC:.*]])
; CHECK: .debug_loc contents:
; CHECK: [[LOC]]:
; constu 0x00000003
; consts 0x00000003
; CHECK: Beginning address offset: 0x0000000000000{{.*}}
; CHECK: Ending address offset: [[C1:.*]]
; CHECK: Location description: 10 03
; constu 0x00000007
; CHECK: Location description: 11 03
; consts 0x00000007
; CHECK: Beginning address offset: [[C1]]
; CHECK: Ending address offset: [[C2:.*]]
; CHECK: Location description: 10 07
; CHECK: Location description: 11 07
; rax, piece 0x00000004
; CHECK: Beginning address offset: [[C2]]
; CHECK: Ending address offset: [[R1:.*]]

View File

@ -26,7 +26,7 @@
; CHECK: [[A]]: Beginning address index: 2
; CHECK-NEXT: Length: 199
; CHECK-NEXT: Location description: 10 00
; CHECK-NEXT: Location description: 11 00
; CHECK-NEXT: {{^$}}
; CHECK-NEXT: Beginning address index: 3
; CHECK-NEXT: Length: 23