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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Lower host to llvm Pass crashed with error "Cannot dereference end iterator!"
        </td>
    </tr>

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

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/a0138390
Reproduced with: 
`mlir-opt --lower-host-to-llvm temp.mlir`

temp.mlir:
```
module {
  spirv.module Logical GLSL450 {
    spirv.GlobalVariable @var01s_i32 bind(0, 1) {aliased} : !spirv.ptr<!spirv.struct<(!spirv.rtarray<i32, stride=4> [0])>, StorageBuffer>
    spirv.GlobalVariable @var01s_f32 bind(0, 1) {aliased} : !spirv.ptr<!spirv.struct<(!spirv.rtarray<f32, stride=4> [0])>, StorageBuffer>
    spirv.func @func(%arg0: i32, %arg1: f32) -> i32 "None" {
      %cst0_i32 = spirv.Constant 0 : i32
 %var01s_i32_addr = spirv.mlir.addressof @var01s_i32 : !spirv.ptr<!spirv.struct<(!spirv.rtarray<i32, stride=4> [0])>, StorageBuffer>
      %0 = spirv.AccessChain %var01s_i32_addr[%cst0_i32, %arg0] : !spirv.ptr<!spirv.struct<(!spirv.rtarray<i32, stride=4> [0])>, StorageBuffer>, i32, i32
      %1 = spirv.Load "StorageBuffer" %0 : i32
      spirv.ReturnValue %1 : i32
    }
  }
}

```
 
trace:
```console 
Assertion failed: (BaseT::wrapped() != End && "Cannot dereference end iterator!"), function operator*, file STLExtras.h, line 546.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt --lower-host-to-llvm temp.mlir
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-opt 0x0000000100e007b4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x0000000100dff81c llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000100e00e4c SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001867854c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x000000018676dee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001866a8340 abort + 168
6  libsystem_c.dylib 0x00000001866a7754 err + 0
7  mlir-opt                 0x00000001026b6600 (anonymous namespace)::LowerHostCodeToLLVM::runOnOperation() (.cold.13) + 0
8  mlir-opt                 0x0000000101d21904 (anonymous namespace)::LowerHostCodeToLLVM::runOnOperation() + 2172
9  mlir-opt 0x000000010200b430 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 420
10 mlir-opt 0x000000010200b960 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
11 mlir-opt                 0x000000010200d2dc mlir::PassManager::run(mlir::Operation*) + 1148
12 mlir-opt 0x0000000102006794 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
13 mlir-opt                 0x0000000102006364 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 704
14 mlir-opt                 0x0000000102070f80 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 656
15 mlir-opt 0x000000010200478c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 216
16 mlir-opt                 0x0000000102004c80 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
17 mlir-opt 0x0000000100ca3298 main + 108
18 dyld 0x0000000105811088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsGFlv47j51zAvRAyKOiw9-MFHsjOA0wRJMED7YlDiZ5sdilRJKjPury9ISb7G6XgXKXZQrBFEEvndN8msFRsFMEHpDKWLG9a6rTaTuZZSN9q41pKbUvPd5GH5-RmXrZAOM4crXdfC4a1zjUXxFNF7RO83wm3bclTpGtF7Kd-Gx21j9D-hcojed3iI3jMSxXlcEEQWiEyfoTGatxVw_E24LYqnuNtAGamlMLe6cfj2VupvYG632rpbp289aeygbkYeBGU9re7_YT2e7kn1f-Gz1ryVgNF41n1jbBth3kb9-lJvRMUk_m35skxScgw3QP4mdcnkF2YEKz2lhLwxQyK7EjHFpVAc0ZwgOscRooUnwKRgFjgaL3DQkEYdocYZFM_3n9aZtnJhJd8vGseMYTsUz0VMPVHrjOCA4kWC4juM0hlB6QLRAsV3fvvFacM2MGvXazB-7Vrh1_9T4dcfIvy6VZUX2T8Dn5SZDfFi9cbpViK_EjgW-NYz8o5BlP5NK0CUnvoUe6TKOhLch-JFz2uulXVMOUzwwKDDQTQ9-HvFODdHWD7yRn4NrNXrs9j4E50ftCRHgk6rCqydb5lQFzTyReFglYNlPbs_QQ06Hxx8cMOgVHSk1FIz7h19SsB7vFN-eo7foT2Da436wmQLA8UzSDReDB_718PLpTLT1zFnWAU_lqJKK6t9-oXlqbVgnNAKr5mQwDsD5zNm4dXjxtNvhjUN8GDUwhvf63ynvLIZopnXec6U0g5zMLAGA6oCDIpj4cAwp43HoT4jvBV9_gR-uhl2p2FdSMAvr8u7784wO9r6NSkU4DTJRp2sT8u76csdtm3p-wDDZbvBBnzHwE7__r4grG3BInqPmRdWVbLlgN0WcGWY3eKSVV-DDXv2L45VXzFv62ZvVDJCpHgyemNYjZnZtDUo54XA13aQM8qhFenWYburSy2xYjVY7xBQtjWAd7rFW_YGOOjSAYl_g8FC-T2Dn6avn7A22IILqoB6E0YrLxd-YwajjCyXXx5WL39_mD0uP__j7nnlUVBGvA0bLVQwpu-XxUFNfNCHfCfdLyIECBmXSZClixW7s93LkxHKBbVeQxTS_ABk2LeVts4Aq0MIzbFQroutGU6zjmV0xPL8dywCX6_zqLokwnOrXsRGMfmJKS7B2H0Ez3AU9QlG39cMkgqfEEA0PxI0TpKORIyxFKXdWQf1qpHMrbWpR3wnRXlEMs_GeZpUCV5ZsXGG1c2JuskJEbc1wPglGhkHILgHWH0VUgYyNM87OukxneoChYzlcUIwK33WBFNkPWr2c9TxOE0wGBMQ-2Izvs5RNCuzjBAfykxptat1a7vobkJ8FJ3Tlj5XPmnr5prDq_ah2gdNqx7VYygZQqu9K_NRpSUfRfHgll6q_DqpIk6jgiQfLdUM02jcR1hxOcIoIWUSEzyMi_GUg2NCdu-Pzat-bJ6YtVPOGl8kB3aI5gcUD9CXz8PikThnO1PF5M4K-8AU2_h4nuNSa-mfrQojOT9OxYT2xozIuyoU2e9X4Uk04Cv7iSod6F6y7MN1OkbyrD4rPy_4urhvQe8BdJy7jV72J2ZAuc9qrbHvpy5Q6AvD3mzRdZlBCKe8OuM-6HPR76fmGEpa0idyRN9zVzYuEtyA8RVqGrqw_UllHmw5PK3jHehqFfX1dssM8FU3ix1IvejWVPCw8TPUYKIzp_rT3VwrB99d74AD-jAlrAysUTw_IPVnpGewrfQFLL9sNs9rGOlOdejbDOmrdxRf66QszhL8niB_RPIfbdkq8a8WfrDlA9Ta7IaJ8pITOKxZK92KgwQH7yPHd71N3vd5sFrYqZiUfgZardWJIg9SmMfGPTChfhI9v4aGHxlLB4iFYBIq9wwbYZ3ZvZMv1z37NoNosiKBUS612vw6FvwhRkIOjfc5lFyZQ2Oyzo_7hW2kcFPFn4z2J8JB-l8kM_4vMvm_Qlyujdl-Bk_fayTJOD9uWH9VhA-vCP0UOXgiu7ZLJdVJhp16ph-Eqi3rRp6zpvvijFCbZ1hfr1c_e1AyzB7jy-episW0yHHdXfnMcLRHyDHfSX4MnOZRRPIcW8f6M0o62OHsKuOGT2JexAW7gUmUjeM0IQlNbraTpIC0IBQoSwD4OmfJelykScFjwkgc0RsxoYTGJIpolFFCkxHPOAVOy7LKKUlLhhICNRNy5M0z0mZzE64LJmlRjKMbyUqQNtxfU6rgGw6biFKULm7MJBzOy3ZjUUKksM4eqDjhZLj4DvZNFzicLfBW23DuDrcDPtS6O4j-btqfubS5-qblpjVy8sevQ4KK_wkAAP__CfYQkA">