<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">