<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61405>61405</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            `mlir-translate` fails with Assertion error in `llvm::checkGEPType`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          AntonLydike
      </td>
    </tr>
</table>

<pre>
    Might be related to #41833

## MLIR Version:

Compiled from commit `e0282cb4da9402de5712ac7855af6c71a03d0c19`.

```
> mlir-translate --version
LLVM (http://llvm.org/):
  LLVM version 17.0.0git
  Optimized build with assertions.
```

## Reproduce:

Runnning `cat gep.mlir | mlir-translate --mlir-to-llvmir` produces the following error:

```
mlir-translate: /home/anton/uni/llvm-project/llvm/include/llvm/IR/Instructions.h:933: llvm::Type *llvm::checkGEPType(llvm::Type *): Assertion `Ty && "Invalid GetElementPtrInst indices for type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-translate --mlir-to-llvmir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-translate 0x00000000009837cb
1  mlir-translate 0x000000000098152e
2  mlir-translate 0x0000000000984186
3  libc.so.6      0x00007f51fb23dbf0
4  libc.so.6      0x00007f51fb28abc7
5  libc.so.6      0x00007f51fb23db46 raise + 22
6  libc.so.6      0x00007f51fb2284b5 abort + 215
7  libc.so.6      0x00007f51fb2283d9
8  libc.so.6      0x00007f51fb2367b6
9  mlir-translate 0x0000000000f61991
10 mlir-translate 0x0000000000f616d2
11 mlir-translate 0x0000000000f615d6
12 mlir-translate 0x0000000000f5f2d4
13 mlir-translate 0x0000000000f4db07
14 mlir-translate 0x0000000000da64e7
15 mlir-translate 0x0000000000da6aa6
16 mlir-translate 0x0000000000da873a
17 mlir-translate 0x0000000000daa201
18 mlir-translate 0x0000000000dac7b4
19 mlir-translate 0x0000000000d99816
20 mlir-translate 0x00000000011b7f99
21 mlir-translate 0x00000000011b6697
22 mlir-translate 0x00000000011be7d3
23 mlir-translate 0x00000000011b50ff
24 mlir-translate 0x000000000092f635
25 libc.so.6      0x00007f51fb22924e
26 libc.so.6      0x00007f51fb229309 __libc_start_main + 137
27 mlir-translate 0x000000000092f535
fish: Process 189236, 'mlir-translate' from job 1, 'cat gep.mlir | mlir-translate -…' terminated by signal SIGABRT (Abort)
```

The contents of `gep.mlir`:

```mlir
module attributes {llvm.data_layout = ""} {
  llvm.func @test(%arg0: !llvm.ptr<struct<(ptr, ptr<i32>)>>) attributes {sym_visibility = "private"} {
    %0 = llvm.getelementptr %arg0[0, 1, 0] : (!llvm.ptr<struct<(ptr, ptr<i32>)>>) -> !llvm.ptr<i32>
    llvm.return
  }
}
```

Is this a malformed `gep` operation? I'd think that we should access the `llvm.ptr<i32>` inside the struct and add offsets to that, no?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycV11v46oW_TXkZasRHza2H_KQtsncSh2dqlMd6d6XChuccGpDBDhzc379EdhpO5k5jjRVFcVmAWvvtWGvCO_1zii1Qvktyu8XYgh761ZrE6x5PEn9pha1lafVV73bB6gVONWJoCQEC4iyjJSMIXyP8Hr6pAxRBl8fH57hT-W8tgax9WfEne0PulMSWmd7aGzf6wCIY4VpSZs6k6LKMJUqLwgVTVHmuWh5UxCBmcQNqRDHyx925Hj6Hx_ZBvpOu5vghPGRK9zcHCcmCfH4-OdXQLTch3CI3OgW0W3XHfuldbv0VL1TBkjoaT6QYomXeKfDefSPQ9C9_ltJqAfdSfiuwx6E98oFbY1f_pri50w9q4OzcmjURZqeB2OMNruYmkYE2KnDMsYFqLj7OcDxhb2JYWiHOIZpVQ9hr6C1XWe_x9WUc9ZdbHVB78fFEVsDotu97RWiWxHrAtHtYPSUtJuDs3-pJkyPiG61abpBqo8XD8_xw_jghmZMyx6xdcVYXDth2Bqx9cvpoADR9cebZq-aty-bpziCaPkzdJQK1ueEx2S9nABRjigHROmDOYpOS_iiwqZTvTLhKbhIBbSROqantQ5CWp8gShEtoBWxPCfpnh43628b8EMdy1RAPezAqYN1IZ6AWEL-vYZ2OuyHetnY_iP2ixRp7wflEd2CMBKmTCWJGif8HmrRvAUnGjVt_y2I5g3k0B_eNcNLSH9Pzu6c6EG43RADizyuFsbFoqle7RDAn_radmBEr3w8G8r4wSk42QH24qiSSjcjSP-tHGgTxxw8rV_-A9aBVyFFocxRO2siHzgKF_WIB-j123-_3v7x-PC_zfNrnBILNFg4WG1SHnX4fOgwXMaB_4_f_6qSFU09IskVJMmpGpH0CjIjJR-RDKDTdbP0dsnHTI_Ios1JW1Mm63Y6KNk8shR1U4zI_OqaGQcntI9VfQuUjtP4_DRaZnUOoo7FmKaRfJxXXJvHZDUiyyvEeFFPaalmE9hyUlVkEgVfQXI5xUfIFWQup90JnUXmLZXZhGSzyEzWeBKFZHNIKXimzsj8ClKIM08-jywLJiZkMY8UFJ_zWc4jm6I-x17NIquqJBNPOqcRIXXRVlOF0DmNCKk5r6Ys0TmNCKlVISerQOc0IqTOcdtOyFmNKtpyNtU8zedrvqLZ-SrgV5AMV_D6GjGvPggXXnuhTTphhJ1jnVWvom1-5tVqH7tdvK4b5T2QsqKMI3oHiBYXrTY2n2iK_rI1kAlytfejDUUlRmsepwflem2SQatPEK2d6ODbw5f17fNLvNfX8bKId-2_-5KX2IysCbGlgG3jFX7ePyL_xTqk4dE-WDl0CkQITtdDiP2kuE32SoogXjtxig0HsXtI_Zai4j4izo4qIdvBNIAyHJQPiJaI5sLt8GhFSEIcgkPsbrQUiN0hWsY39A7GAc0oYpvUVDbjlwtC_tS_HrXXte50OJ3pHJw-JiEuWQEgmuMES9vvVFCjnzgEB2d--S2OFJJ0GOX3MDIuf5_0TbSzP06fUO_E0pBTYXDm_BIV95M8719-pfRDNIfag4BedK11vZKT2rE_24NyIiT_voUHRAsZ0eYNwl4E-K7A7-3QSRBNquvY_RHHPxPlGLTxerI5Y_DJ_QgpwbatV8FHDxCXjbkwFrHtQq6YrFglFmpFeFGWOM8oWexXNS9xWTSirERLWlXghnAuWEF4UbRV3Sz0imLKMCMZyXJMyZJkWcPLXGWqypSgBcqw6oXulmfLv0imbMVJhvNFJ2rV-fRriFKjvkMajAWR3y_cKvmgeth5lOFO--A_Vgk6dGo1HYVPh5rj5Cj9-Nvgw6omJx6N1JS1X1hejheD61a_7zJTTP8EAAD__2cjFGY">