<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/135937>135937</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DebugInfo] Misleading debug location at O1/2/3/g/s in inlined code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
debuginfo
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Apochens
</td>
</tr>
</table>
<pre>
Clang version
```
Ubuntu clang version 21.0.0 (++20250415033808+d0e4af8a88dc-1~exp1~20250415153924.2354)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-21/bin
```
LLDB version
```
lldb version 21.0.0
```
Bug-triggering program
```c
1 int printf(const char *, ...);
2 int a, c;
3 unsigned b = 5;
4 int d() {
5 if (b)
6 return b;
7 c = 8; // Dead code here
8 }
9 int main() {
10 d();
11 printf("%X\n", a);
12 }
```
Here is the optimized LLVM IR with the misleading debug location: https://godbolt.org/z/f6e1qbdaM.
```llvm ir
define dso_local noundef i32 @main() local_unnamed_addr #1 !dbg !36 {
...
3: ; preds = %0
store i32 8, ptr @c, align 4, !dbg !39, !tbaa !30 ; c = 8;
br label %4, !dbg !40
4: ; preds = %0, %3
...
}
!39 = !DILocation(line: 7, column: 5, scope: !25, inlinedAt: !38)
```
When debugging, LLDB stops at the dead line:
```
Process 37755 stopped
* thread #1, name = 'origin', stop reason = step in
frame #0: 0x0000555555555165 origin`main at origin.proc.c:7:5
4 int d() {
5 if (b)
6 return b;
-> 7 c = 8;
8 }
9 int main() {
10 d();
```
I suspect that this bug is caused by function inlining. cc @SLTozer @jryans
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0VU1v2zgT_jX0ZWCBIkV9HHyQ49d4A6TYxW734xZQIiWzkEktSXXTHPrbF0PJbeoiRhDLw5mHmnnmmZEhmNFqfSDiSMRpJ5d4cf7Qzq6_aBt2nVNfDg-TtCN81j4YZwltSUm3P9r-0S02LtC_dQGWZzSjQFhN2JGwI6NM0CIXlPOaok1RXcihlnWt-n3-Vb_M-debUy54w4qMcVEQ1hDafpR-1JHwFl7q8rks9nO_n4xdXvajXfD84rVUcHVKT-g1u2BeCG0fbYhymrQ6GY92ws5L8ISdJ9Ph_-nzdc9yws6duc-K0Pbp6XR8J-dpUt1drj_HH5dxH70ZR-2NHWH2bvTy-tavJ7SFHMDYCLM3Ng6E1b2zIUJ_kR4Iawl7gCzLsA78iO5sdZd40G82DrDYRKOCDgg_gdhOitVbJSIaIFWyCgAAMyA93VphKMHruHgL3RZZoU-fwGrCj4DFI-wMJ6x075SGi_YaPWsAUp3wqVlvu0pjf7gwp7c3WMHzHMG_ZUwYI0z8TcSDTY8PmN3Nld3Q76r7f-01mADxosHN0VzNq1bw9PTnB3j8Df418ZKOriZMWiokQOluGWFyvYzIKG_hEuMcCG_X1EanOjfFzPmRsPMrYeeh1Pk_nZIfsrf3Y9uA8YS2Sg_GalDBPSPsBNYtVukBDGdACvqmEOn8ebFWXrV6lkohuzwHwnLVjfjFyxs9ifCUJE9dy48we61CIoMwQZNTiA4rwBnUWLI5eryyT-WbzGihwMc3-M32O3ZSJgNN0N85TrCdh0l2esKL7hCKrfTFO2-VnAV_m8LKHG3T_Ztnfnp8upHA6slYjXhVamg3LddEjcCfoXezXoWbs2QxFv1VGzcrr9f-vWuOvy7arnyPxo4YmMQcopsDyJg6Q2Ejb7ffIfzqXa9DAF5VQqSoWauURQtxnTVIHuIin1telfNmRMJTKhgFXsvgbDoPUc-Qxgz2_uBTHOMUE6EvlFIqbp-8FLBhlamH8JVXQzZ712c94W1FeCtWtCLJ-WeZwyr0e6kDlLB9ftT8nvD_rbqH-65AkX-TOaDQ35E6ANyr_Y6bRwhLmHWPLCQqTAAUpgnQyyXgCPsCw2J7bJCVcGPHDPoe-_v3p4_uVadW_-S_SBtgpw5cNbyRO33Iq6KoGlbmdHc5NFU96FwNLJd5WVSiKjSjgha6K-ggmnpnDtvGKWnNS0EzVRRSFo3QvKxVXQpSUH2VZspQ8jgXdiaERR9yLhpe7ZJOQlqcjKVuM3ZwOMLEaecPab10yxhIQScTYvgOE02c0sY9YdQjRokTfHhvViH_v-CeYoSdOY4qws4BjL3pIQ3k3eKnw91IM_GydFnvrtu6u2292btPuo-EnVNGgbDzltTnA_svAAD__47mPSw">