Debug info: Store the DIVariable in DebugLocEntry also for constants,
authorAdrian Prantl <aprantl@apple.com>
Fri, 11 Apr 2014 17:49:47 +0000 (17:49 +0000)
committerAdrian Prantl <aprantl@apple.com>
Fri, 11 Apr 2014 17:49:47 +0000 (17:49 +0000)
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

lib/CodeGen/AsmPrinter/DebugLocEntry.h
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
test/DebugInfo/X86/dbg-const.ll
test/DebugInfo/X86/dbg-value-const-byref.ll
test/DebugInfo/X86/fission-ranges.ll

index 470453fbe26fd9d9896edbe44fa4909c8e22dbbf..7ca9443594b2948ecdf60ce0398f8811005aac9b 100644 (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;
   }
index fde3604e04f37d663ef0394eaea93d500194d77c..83b340f67ae72a2ff8e872e8e5bcd7421f66f46a 100644 (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!");
 }
index 12dc154c051b0271a22f244e83683ec296cb060d..300c1eeb977b2dbd84eb743b379415c2380c75f3 100644 (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:
index 23dead3f859306e87e328300c1f34b6593816721..2f808786a8c6b00a831b170131c03446d12944e7 100644 (file)
 ; 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:.*]]
index 416e7cb2a2fb878dd5cac4e474acca7a4a7d335d..057039c3c5ccfa20850735e907d1f9d2c18cd564 100644 (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