[PATCH] D65172: [SafeStack] Insert the deref before remaining elements
Petr Hosek via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 23 17:06:45 PDT 2019
phosek updated this revision to Diff 211388.
phosek marked an inline comment as done.
phosek added a comment.
Done
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65172/new/
https://reviews.llvm.org/D65172
Files:
llvm/lib/Transforms/Utils/Local.cpp
llvm/test/Transforms/SafeStack/X86/debug-loc2.ll
Index: llvm/test/Transforms/SafeStack/X86/debug-loc2.ll
===================================================================
--- llvm/test/Transforms/SafeStack/X86/debug-loc2.ll
+++ llvm/test/Transforms/SafeStack/X86/debug-loc2.ll
@@ -24,6 +24,10 @@
; CHECK: call void @llvm.dbg.value(metadata ![[EMPTY]], metadata !{{.*}}, metadata !{{.*}})
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
@@ -94,3 +98,4 @@
!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)
Index: llvm/lib/Transforms/Utils/Local.cpp
===================================================================
--- llvm/lib/Transforms/Utils/Local.cpp
+++ llvm/lib/Transforms/Utils/Local.cpp
@@ -1599,13 +1599,8 @@
// 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();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65172.211388.patch
Type: text/x-patch
Size: 2062 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190724/cf505893/attachment.bin>
More information about the llvm-commits
mailing list