<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/138647>138647</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DebugInfo] RAUW updates debug value addresses using undefined local variables
</td>
</tr>
<tr>
<th>Labels</th>
<td>
question,
debuginfo
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Apochens
</td>
</tr>
</table>
<pre>
When inspecting debug value updates in MemCpyOptimizer, I encountered a case: https://godbolt.org/z/WW98j8dPf. In short, I found a testcase that leads to a `dbg_value` referring to an undefined local variable after applying MemCpyOptimizer:
```llvm
#dbg_value(ptr %test_array_b, !9, !DIExpression(), !16) ; refers to a local variable defined after it
%test_array_b = alloca [31 x float], align 4, !dbg !17
#dbg_value(ptr %test_array_b, !11, !DIExpression(), !17)
```
The code in MemCpyOptimizer leading to the IR is given in below:
https://github.com/llvm/llvm-project/blob/716b02d8c575afde7af1af13df145019659abca2/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp#L1668-L1669
And the code root for updating the metadata (i.e., `dbg_value`) is:
https://github.com/llvm/llvm-project/blob/41b76119ecc2b22546dc27ca51947304cf5aca28/llvm/lib/IR/Metadata.cpp#L588-L594
Is this an expected behavior? cc @OCHyams
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykVE1v3DYQ_TXcy8ALiRT1cdBh7e2iC6RI4abw0RiSoxUDrqiS1NbOry-otRPHaFEEAQhREDUz7808PozRniainslbJvcbXNLoQ7-bvR5pihvlzXP_MNIEdooz6WSnExhSywku6BaCZTaYKIKd4Dc6383PH-dkz_YLBcbv4Ag0ab9MiQIZQNAYiYkdjCnNkYkd4wfGDydvlHdp68OJ8cMXxg8PD137uTW_D1s4ThBHH9I13eCXKSdKFFNOBmnEBI7QREgeEFhdGHV6XMGxuoBAA4WQUefjCZbJ0GAnMuC8RgcXDBaVI8AhUQCcZ_ec_35PRuxYsa66uC7nLmdW7AAAGBffavJ2TgEYlxniI4aAz48qg2e87F72_fGXpzlQjNZPjLeMvx6UNeMdMHF7xf3C6R3SVwJXxDZlFO_qARN7QJcDgclbUcITDM5jYnKfS6Gzpwmql6pGndbizY_yKcv_JdTk9zdtu3bx00igvaF_kc06zJd5pZHgeA82wsleVg2CIuf__jqNdzqyaVzUVvsz44d1PtftZg7-M-nE-EE5rxg_NGWtCm5aLRuJg6EGhxKHUpihrGRRdrXsUGnkb_LYHPcp4BQHH86R8cMfGh0Gxg_vGGz1PDMuPpR13d7kZ3cFu5vMymglHrxPMPhwvUAr35HgTAkNJgTGW7ul7drF7xWdBWLjT3egKlVTl2VHWnPFuaxqo3mjUZZd1Yii0oNEjXmU33fgeL8SvsJ8ZSrb9uaD7KorpGOENNqYbxs9Zc8gA4pGvFgfmDiA1sCq4uPdr894jrAxvTCd6HBDfdlUtSxrLtrN2KuhFKouhKiE0ihriboWbScq4rqt9LCxPS-4LGRRFw0Xst22FVIzYF1X7VCgUqwq6IzWbTOD7C4bG-NCfSnaumo2DhW5uDof538tFNOqXs74HeN8NTk7DT5_kftN6NdGquUUWVU4G1P8ljfZ5FYP3eeoY46Se7jf_fnw1SDfmiYaky8LRVhiHv1_mVLcLMH1PzzilWVW6AvRS8__CQAA___U7t29">