Issue |
149301
|
Summary |
[DebugInfo][NewGVN] Debug value loss caused by the missing salvage
|
Labels |
debuginfo,
llvm:GVN
|
Assignees |
|
Reporter |
Apochens
|
NewGVN deletes trivially dead instructions without salvaging the corresponding debug values (`markInstructionForDeletion(&I)`).
https://github.com/llvm/llvm-project/blob/145b6cdffaf6711a5b7ad191444ab3e5d97b8992/llvm/lib/Transforms/Scalar/NewGVN.cpp#L3044-L3049
Here is an example: https://godbolt.org/z/G4PWEv6nr. In this example, the `icmp` instruction is deleted without its debug value being slavaged.
Before the deletion:
```llvm
bb1:
%tmp = load i8, ptr null, align 1, !dbg !25
#dbg_value(i8 %tmp, !9, !DIExpression(), !25)
%tmp2 = icmp eq i8 %tmp, 8, !dbg !26
#dbg_value(i1 %tmp2, !11, !DIExpression(), !26)
br label %bb3, !dbg !27
```
After the deletion:
```llvm
bb1:
%tmp = load i8, ptr null, align 1, !dbg !25
#dbg_value(i8 %tmp, !9, !DIExpression(), !25)
#dbg_value(i1 poison, !11, !DIExpression(), !26)
br label %bb3, !dbg !27
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs