<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149301>149301</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DebugInfo][NewGVN] Debug value loss caused by the missing salvage
</td>
</tr>
<tr>
<th>Labels</th>
<td>
debuginfo,
llvm:GVN
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Apochens
</td>
</tr>
</table>
<pre>
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
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8lN-O6yYQxp8G36ATmbHxnwtfZOvjbaRqVanV6WUFZuzQEuMCztnt01eQZDfdrlS1UitFARnm4-PHzAjv9bwgdoQ_EN5nYgtH67r9ascjLj6TVr10T_j18csTVWgwoKfB6bMWxrxQhUJRvfjgtjFou3j6VYej3QL1wpzFrJeZhiPS0TqHfrWLil8Uym2mZ2E29JRAQ6r8JNyvhzedwbo-HqbtEtehOhBoSZUTaHck35N8fwxh9aTYExgIDLMOx03uRnsiMBhzvg2fVmd_wTEQGKSxksDASi6rUU2TmKqaMcFlLRRrWVmWQhbIVVvLpm3hTkfHuB-dWPxk3ckTGH4YhRGOwHABsxvXlUDxXZGX5af43148fosOqfZULBSfxWk1SIo9fefcKmlN2Fk3Exh-JzA8lt__9PlcLW5HDwsNR-1fo-GbRJNUuR5PK6nye_bxpMsLqddX0MHf06YSI39vxFnMqK4oH3CyDpOyukEv4kIEnn6JRL6Xkl0WKCXAw2mlpOipsTEHmmhuDY4umzFxLoyeF8rilABTco4D8BhNoFBy_jlZItDo5ip33dtex_7w-Xl16P0tC24LwOP8zQYkHxEJxd_on-Sad-dXKYz-xQK7SV33M_a3JqqbCemoERJNlJCyeHdifQ_yAnw_BXT_I-8P7vvvkX_EbrXax4D_El2mukK1RSsy7FjNoeZVWTfZscNWjnKaBEAOsq4wB2i4KiDHgvO4RXeQA89rVjMoa97skE2s4orXhcKSl0jKHE9Cm13kHisx095v2LGyLXKWJYc-NUiAVE16mSyBmCsEID1WsX_88hQ_8T5zXWo9cps9KXOjffBvykEHk5ptH4UOUYj3hD9cOgnhPe3v6tVY7-koNo-KypeUMiftfSri1GAx25zp_nEzTPfzqR2mK547-CMAAP__subKHg">