<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150163>150163</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR][LLVM] Recursive debug type not imported properly if input is bytecode
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Kuree
</td>
</tr>
</table>
<pre>
How to reproduce:
`bug.c`:
```C
int main() {
int a = 0;
return a;
}
```
```
$ clang -O1 -g bug.c -S -emit-llvm -o - | mlir-translate --import-llvm --mlir-print-debuginfo | mlir-opt --emit-bytecode | mlir-translate --mlir-to-llvmir
mismatched subprogram between #dbg record variable and DILocation
#dbg_value(i32 0, !17, !DIExpression(), !20)
label %0
ptr @main
!17 = !DILocalVariable(name: "a", scope: !18, file: !1, line: 2, type: !14)
!18 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !12, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !19)
!20 = !DILocation(line: 0, scope: !11)
!11 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 1, type: !12, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !15)
label %0
ptr @main
```
Either replacing `--emit-bytecode` with `--mlir-emit-debuginfo` or skipping `mlir-opt` works:
```shell
// works
clang -O1 -g bug.c -S -emit-llvm -o - | mlir-translate --import-llvm --mlir-print-debuginfo | mlir-opt --mlir-print-debuginfo | mlir-translate --mlir-to-llvmir
// works
clang -O1 -g bug.c -S -emit-llvm -o - | mlir-translate --import-llvm --mlir-print-debuginfo | mlir-translate --mlir-to-llvmir
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcVVGPozYQ_jXmZcTKGAjJAw_Z5aKumutVt9K9VgYbMj1jI9tku_31lQ1JbvfabZ_uoRISeDzzfeNvPAN3DgctZU3Ke1I2CZ_9ydj659lKmbRGvNQ_mWfwBqycrBFzJ0m-JzQ-G9rOw11HNnS1bejyPBC6R-1h5KgJ2xK2A1LdE7oHAAgbHEjeACX5xWiln60GvlhI1XwLd6W7LVkBneJ6gPRTBukAMRFInyCVI_pUqfMIqYEUSPUAo0Kbesu1U9xLSFMcJ2MvXmncnixqnwrZzgPq3tzizOQhXVDbFy87I-Tfgy4GE1HRErof0Y3cdycpwM3tZM1g-Qit9M9SaiAsF-0AVnbGCjhzi7xVErgW0DweTcc9Gh2PGvx-O3M1S8K2mDOghD0AYVlWrR_N44c_JiudCyFR73WD0fBN94q3UgFhZRBv8hZIQWNxAn6WVbEcESgwqy9rNoRtNR9DxYEwxgljAdd1ZlptWbYNlh7V1RDWCnVcR3f_cvMulnRiYOQU6Dzqzi_kT1eZXjMv9-h78ve4s7fct_Djty5uOig-uLBuHp9-DYtG9qgx6B8rfTF_mjyO-KcUIWzW6FfkCGyl56il-MUI6S6Uu-txGX0tsV8qdUmWfne07KZU9r9Riv6jUuW_39PX0-AD-pO0YSop3qEegGzomzYlGwrP6E_LVmzPuH9t8uBgLLivOE0rxKXlY6yxX92byeZOUqlYlwNhh9WF7n_oLHrf592R9EPT_q85XbRNRJ2LXb7jiayzqsxZwTYVS051W4i-3-Vsx4qu35VZsRHbvOUsK0VXFaJPsGaUlbRiOc3LLGN3lO7yqt-1NBN9JVtKCipHjuousN4ZOyTo3CzrrKTZJk_itXPxF8hYSDC0UNkktg7-aTsPjhRUofPuhuDRq_jb_Hh8_EzKhpT3x-OXj6Rs4LPsZuvwLCGqEZsLtPGwqCYFTNZM0qoXwB5QT7MHdHC5uMlsVX3yfoq3L5ZsQH-a27vOjIQdQgrrK52s-V12nrBDPJEj7LAe6lyzvwIAAP__ssZdwg">