diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index cfbc24c0001..8af22af83d4 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -1748,11 +1748,7 @@ void llvm::salvageDebugInfoForDbgValues( } else if (isa(DII) && DII->getNumVariableLocationOps() + AdditionalValues.size() <= MaxDebugArgs) { - // TODO: Uncomment the line below and delete the two beneath it to enable - // salvaging of dbg.values with multiple location operands. - // DII->addVariableLocationOps(AdditionalValues, SalvagedExpr); - Value *Undef = UndefValue::get(I.getOperand(0)->getType()); - DII->replaceVariableLocationOp(I.getOperand(0), Undef); + DII->addVariableLocationOps(AdditionalValues, SalvagedExpr); } else { // Do not salvage using DIArgList for dbg.addr/dbg.declare, as it is // currently only valid for stack value expressions. diff --git a/test/DebugInfo/NVPTX/debug-info.ll b/test/DebugInfo/NVPTX/debug-info.ll index 08a7e037ec4..15ea41e8ebd 100644 --- a/test/DebugInfo/NVPTX/debug-info.ll +++ b/test/DebugInfo/NVPTX/debug-info.ll @@ -702,12 +702,12 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_info ; CHECK-NEXT: { -; CHECK-NEXT:.b32 10029 // Length of Unit +; CHECK-NEXT:.b32 10034 // Length of Unit ; CHECK-NEXT:.b8 2 // DWARF version number ; CHECK-NEXT:.b8 0 ; CHECK-NEXT:.b32 .debug_abbrev // Offset Into Abbrev. Section ; CHECK-NEXT:.b8 8 // Address Size (in bytes) -; CHECK-NEXT:.b8 1 // Abbrev [1] 0xb:0x2726 DW_TAG_compile_unit +; CHECK-NEXT:.b8 1 // Abbrev [1] 0xb:0x272b DW_TAG_compile_unit ; CHECK-NEXT:.b8 0 // DW_AT_producer ; CHECK-NEXT:.b8 4 // DW_AT_language ; CHECK-NEXT:.b8 0 @@ -8306,7 +8306,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 3 // DW_AT_decl_line ; CHECK-NEXT:.b32 3345 // DW_AT_type ; CHECK-NEXT:.b8 0 // End Of Children Mark -; CHECK-NEXT:.b8 40 // Abbrev [40] 0x2671:0xbf DW_TAG_subprogram +; CHECK-NEXT:.b8 40 // Abbrev [40] 0x2671:0xc4 DW_TAG_subprogram ; CHECK-NEXT:.b64 Lfunc_begin0 // DW_AT_low_pc ; CHECK-NEXT:.b64 Lfunc_end0 // DW_AT_high_pc ; CHECK-NEXT:.b8 1 // DW_AT_frame_base @@ -8386,7 +8386,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 12 // DW_AT_call_file ; CHECK-NEXT:.b8 6 // DW_AT_call_line ; CHECK-NEXT:.b8 37 // DW_AT_call_column -; CHECK-NEXT:.b8 43 // Abbrev [43] 0x2711:0x1e DW_TAG_inlined_subroutine +; CHECK-NEXT:.b8 43 // Abbrev [43] 0x2711:0x23 DW_TAG_inlined_subroutine ; CHECK-NEXT:.b32 9791 // DW_AT_abstract_origin ; CHECK-NEXT:.b64 Ltmp9 // DW_AT_low_pc ; CHECK-NEXT:.b64 Ltmp10 // DW_AT_high_pc @@ -8395,6 +8395,8 @@ if.end: ; preds = %if.then, %entry ; CHECK-NEXT:.b8 5 // DW_AT_call_column ; CHECK-NEXT:.b8 44 // Abbrev [44] 0x2729:0x5 DW_TAG_formal_parameter ; CHECK-NEXT:.b32 9820 // DW_AT_abstract_origin +; CHECK-NEXT:.b8 44 // Abbrev [44] 0x272e:0x5 DW_TAG_formal_parameter +; CHECK-NEXT:.b32 9829 // DW_AT_abstract_origin ; CHECK-NEXT:.b8 0 // End Of Children Mark ; CHECK-NEXT:.b8 0 // End Of Children Mark ; CHECK-NEXT:.b8 0 // End Of Children Mark diff --git a/test/DebugInfo/salvage-gep.ll b/test/DebugInfo/salvage-gep.ll index dfb3b531108..6c31b0ff61d 100644 --- a/test/DebugInfo/salvage-gep.ll +++ b/test/DebugInfo/salvage-gep.ll @@ -1,4 +1,3 @@ -; XFAIL: * ; RUN: opt %s -dce -S | FileCheck %s ; Tests the salvaging of GEP instructions, specifically struct indexing and diff --git a/test/DebugInfo/salvage-nonconst-binop.ll b/test/DebugInfo/salvage-nonconst-binop.ll index f9ee1a6e253..b470bc1ad2a 100644 --- a/test/DebugInfo/salvage-nonconst-binop.ll +++ b/test/DebugInfo/salvage-nonconst-binop.ll @@ -1,4 +1,3 @@ -; XFAIL: * ; RUN: opt %s -dce -S | FileCheck %s ; Tests the salvaging of binary operators that use more than one non-constant