[PATCH] D148536: [Assignment Tracking] Fix fragment error for some DSE-shortened stores
Orlando Cazalet-Hyams via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 18 01:24:40 PDT 2023
Orlando added a comment.
I've added a couple of inline comments into one of the test to help explain the changes.
================
Comment at: llvm/test/DebugInfo/Generic/assignment-tracking/dse/dse-after-memcpyopt-merge.ll:16-21
+; CHECK: llvm.dbg.assign({{.*}}, metadata ptr %g, metadata !DIExpression())
+; CHECK: llvm.dbg.assign(metadata float 0.000000e+00, metadata ![[#]], metadata !DIExpression(DW_OP_LLVM_fragment, 64, 32), metadata ![[ID:[0-9]+]], metadata ptr %arrayidx.i, metadata !DIExpression())
+; CHECK: llvm.dbg.assign(metadata float 0.000000e+00, metadata ![[#]], metadata !DIExpression(DW_OP_LLVM_fragment, 32, 32), metadata ![[ID]], metadata ptr %arrayidx3.i, metadata !DIExpression())
+; CHECK: llvm.dbg.assign(metadata float 0.000000e+00, metadata ![[#]], metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32), metadata ![[UniqueID1:[0-9]+]], metadata ptr undef, metadata !DIExpression())
+; CHECK: llvm.dbg.assign(metadata float 0.000000e+00, metadata ![[#]], metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata ![[UniqueID2:[0-9]+]], metadata ptr undef, metadata !DIExpression())
; CHECK: call void @llvm.memset{{.*}}, !DIAssignID ![[ID]]
----------------
Prior to the patch each dbg.assign with a fragment overlapping the dead part of the store would get an unlinked dbg.assign placed after it.
With this patch that is still done in most cases, but if the dead slice is exactly the same as the existing fragment the dbg.assign itself is just unlinked. That's why on the left we have 2 CHECKs for both of the overlapped dbg.assigns. On the right we have one for each, plus I added in the other 2 non-overlapped dbg.assigns to improve test coverage.
================
Comment at: llvm/test/DebugInfo/Generic/assignment-tracking/dse/dse-after-memcpyopt-merge.ll:48
store float 0.000000e+00, ptr %arrayidx7, align 4, !dbg !24, !DIAssignID !49
- call void @llvm.dbg.assign(metadata float 0.000000e+00, metadata !11, metadata !DIExpression(DW_OP_LLVM_fragment, 96, 32), metadata !49, metadata ptr %arrayidx7, metadata !DIExpression()), !dbg !24
%arrayidx = getelementptr inbounds %struct.v, ptr %g, i64 0, i32 0, i64 0, !dbg !24
store float 0.000000e+00, ptr %arrayidx, align 4, !dbg !24, !DIAssignID !50
----------------
I removed these dbg.assigns to reduce test clutter as they're not needed.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D148536/new/
https://reviews.llvm.org/D148536
More information about the llvm-commits
mailing list