diff options
| -rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 9 | ||||
| -rw-r--r-- | llvm/test/Transforms/SafeStack/X86/debug-loc2.ll | 5 | 
2 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index b6d555cd13e..8e501728599 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -1599,13 +1599,8 @@ static void replaceOneDbgValueForAlloca(DbgValueInst *DVI, Value *NewAddress,    // Insert the offset before the first deref.    // We could just change the offset argument of dbg.value, but it's unsigned... -  if (Offset) { -    SmallVector<uint64_t, 4> Ops; -    DIExpression::appendOffset(Ops, Offset); -    Ops.append(DIExpr->elements_begin() + 1, DIExpr->elements_end()); -    Ops.push_back(dwarf::DW_OP_deref); -    DIExpr = Builder.createExpression(Ops); -  } +  if (Offset) +    DIExpr = DIExpression::prepend(DIExpr, 0, Offset);    Builder.insertDbgValueIntrinsic(NewAddress, DIVar, DIExpr, Loc, DVI);    DVI->eraseFromParent(); diff --git a/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll b/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll index 30623962691..79b6c10ed7d 100644 --- a/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll +++ b/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll @@ -25,6 +25,10 @@ entry:    tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !24), !dbg !16  ; Supported dbg.value: rewritted based on the [[USP]] value. +; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref, DW_OP_LLVM_fragment, 0, 4)) +  tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !25), !dbg !16 + +; Supported dbg.value: rewritted based on the [[USP]] value.  ; CHECK: call void @llvm.dbg.value(metadata i8* %[[USP]], metadata ![[X1:.*]], metadata !DIExpression(DW_OP_constu, 4, DW_OP_minus, DW_OP_deref))    tail call void @llvm.dbg.value(metadata i32* %x1, metadata !10, metadata !15), !dbg !16    call void @capture(i32* nonnull %x1), !dbg !17 @@ -94,3 +98,4 @@ attributes #4 = { nounwind }  !22 = !DILexicalBlockFile(scope: !6, file: !1, discriminator: 1)  !23 = !DIExpression()  !24 = !DIExpression(DW_OP_constu, 42, DW_OP_minus) +!25 = !DIExpression(DW_OP_deref, DW_OP_LLVM_fragment, 0, 4)  | 

