From: Adrian Prantl Date: Fri, 11 Apr 2014 17:49:47 +0000 (+0000) Subject: Debug info: Store the DIVariable in DebugLocEntry also for constants, X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c6db0bdef2569d54781fc38431a403cb4170749a;p=oota-llvm.git 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 --- diff --git a/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/lib/CodeGen/AsmPrinter/DebugLocEntry.h index 470453fbe26..7ca9443594b 100644 --- a/lib/CodeGen/AsmPrinter/DebugLocEntry.h +++ b/lib/CodeGen/AsmPrinter/DebugLocEntry.h @@ -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; } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index fde3604e04f..83b340f67ae 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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!"); } diff --git a/test/DebugInfo/X86/dbg-const.ll b/test/DebugInfo/X86/dbg-const.ll index 12dc154c051..300c1eeb977 100644 --- a/test/DebugInfo/X86/dbg-const.ll +++ b/test/DebugInfo/X86/dbg-const.ll @@ -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: diff --git a/test/DebugInfo/X86/dbg-value-const-byref.ll b/test/DebugInfo/X86/dbg-value-const-byref.ll index 23dead3f859..2f808786a8c 100644 --- a/test/DebugInfo/X86/dbg-value-const-byref.ll +++ b/test/DebugInfo/X86/dbg-value-const-byref.ll @@ -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:.*]] diff --git a/test/DebugInfo/X86/fission-ranges.ll b/test/DebugInfo/X86/fission-ranges.ll index 416e7cb2a2f..057039c3c5c 100644 --- a/test/DebugInfo/X86/fission-ranges.ll +++ b/test/DebugInfo/X86/fission-ranges.ll @@ -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