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

Reply via email to