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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Decorate-spirv-composite-type-layout Pass crashed with UNREACHABLE "unhandled SPIR-V type"
        </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/97a1c98f
Reproduced with: 
`mlir-opt --decorate-spirv-composite-type-layout temp.mlir`

temp.mlir:
``` milr 
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> { 
  spirv.GlobalVariable @recursive_simple : !spirv.ptr<!spirv.struct<rec, (!spirv.ptr<!spirv.struct<rec>, StorageBuffer>)>, StorageBuffer>
}
```
 
trace:
```console  
unhandled SPIR-V type
UNREACHABLE executed at /Users/haoyu/workspace/mlir-fuzz/mlir/lib/Dialect/SPIRV/Utils/LayoutUtils.cpp:98!
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 --decorate-spirv-composite-type-layout 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 0x00000001026238c4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x000000010262292c llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000102623f5c SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001aad414c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001aad29ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001aac64340 abort + 168
6  mlir-opt 0x00000001025ea628 llvm::install_out_of_memory_new_handler() + 0
7 mlir-opt                 0x00000001034d5894 mlir::VulkanLayoutUtils::decorateType(mlir::VectorType, unsigned long long&, unsigned long long&) + 0
8  mlir-opt                 0x00000001034d5500 mlir::VulkanLayoutUtils::decorateType(mlir::spirv::StructType, unsigned long long&, unsigned long long&) + 228
9  mlir-opt 0x00000001034d5410 mlir::VulkanLayoutUtils::decorateType(mlir::spirv::StructType) + 32
10 mlir-opt                 0x00000001034c2744 (anonymous namespace)::SPIRVGlobalVariableOpLayoutInfoDecoration::matchAndRewrite(mlir::spirv::GlobalVariableOp, mlir::PatternRewriter&) const + 120
11 mlir-opt 0x0000000103f3f53c mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) + 1420
12 mlir-opt                 0x0000000103ce1ba4 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 1948
13 mlir-opt 0x0000000103cda7e8 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 936
14 mlir-opt 0x0000000103cdc978 mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&) + 80
15 mlir-opt                 0x00000001034c2048 (anonymous namespace)::DecorateSPIRVCompositeTypeLayoutPass::runOnOperation() + 3540
16 mlir-opt                 0x0000000103c9f518 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 428
17 mlir-opt 0x0000000103c9fa48 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
18 mlir-opt                 0x0000000103ca13c4 mlir::PassManager::run(mlir::Operation*) + 1148
19 mlir-opt 0x0000000103c9a788 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
20 mlir-opt                 0x0000000103c9a358 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
21 mlir-opt                 0x0000000103d0504c 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
22 mlir-opt 0x0000000103c98780 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
23 mlir-opt                 0x0000000103c98c74 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
24 mlir-opt 0x00000001024c5cf0 main + 108
25 dyld 0x00000001076bd088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV9v4joW_zTpi1WUOAkkD32gtNypRLcVzB1p9wU5zgG8dexc22mH-fQrxw4EClvmz0qj1a0qIMnx-fPz75xjO0RrthYAN0F6G6R3V6QxG6luJpJzWUtlGh1eFbLc3jzOHuaoaBg3iBhEZVUxgzbG1DqIxwGeBni6ZmbTFAMqqwBPOX_tvq5rJf8N1AR46sYFeJqPSETzbBWEd0E4nkOtZNlQKNEbM5sgHiP3IBiGFWfqWtYGXV-XQKUiBq51zdTrNZVVLTUzcG22NVxzspWNQQaqemAHBcPQK2k_9_fj8U65-0cV48pbbFUPKlk2HNBMrhklHP0xW8ySNEQK_mqYAo0CHDvBVwpBPHmNBmGAJyhIbxcbUoIK0jt_bX_F9ygY3XoDCLmRf3BZEP6FKEYKDihIQgW0UZq9wlKzqrb3LA44cvK1UUE82V1qoxpqgniigLamcHaRaHxvpRdGKrKG22a1AtXey889cVCN7o4w88F4bBWxOBzjSqXQkgPyUo3YEFFyKNHi-WF-_QXZaXOP_vzH_H48-TS-nd0j-Aq0MVBangV4-qcGpQM83RC5bQI8fZPqRdfWHp623Fg1377535ZwrAjw9I4R7hhnTX2xagzjVs2sZUl7NaB1HcTj3ALn3Hie3Y8X90g3hWU3QUWzRgpsHiAjv5_tTOsGrFFERImYoLwpAZkNIKqI3qCC0JcWuoEzvzCEvqCyqeodluEgCPNnJdeKVIiodVOBMNYJ9ON5cWSrTTkrobdVITkSpGoZnoHQjQK0lQ3akFdAbXROiH0DhZiwzxR6Hn_-hKRCGkwbHIhXpqSwnqJXolAwDGezL4_LxT8fb59mD_-6ny_tEJt4RqJaMtHCa-tCvg8c7SMMv4buLwrxEMcZTVpfrGw81lvtfjwrJkwb1ueWjjjbCynytpTaKCBVgIeW50xYcyjAtygdOpNRz-Tx36ELOMf0lAvzRizYWhD-qSW65W3WWYki7Mzg85GtUooOFAQ46zkaJ4lTESPEWaG32kC1rDkxK6mqQbnlrOipJKRMooQmaKnZ2ihS1QfhJgdKzEYBKU_pwDlAiLzA8oVx3qrBWeb0pH099IQGOkziJESksHnUQjH0Q4dnoEiBDHHWQ5gJbQjnS9mYpVwtK6ik2i4FvC03O6A6lHxpGl00mXFSplmeoK4xxOMvDX8holcm3O0uxz7bmoWznjxQI5W7PUGNaPtpibgU6_bD8-3MgwOXs8sIaH1Ow_AnfG7rhPu5aJvDz7mPsZ_P_PR8WoeT6H_gsE8Ln1jewsfwUTxKElvhiJBiW8lGu6Lnukru7djGcdikn2rn8YNYyTvnKpPCiVfE0M1YlHN4U8yc9f5YocV2L_hMjAElvA7lIbZt1CcO9kyJotNAr-JVGtP3Gsd1zRklRqqPvX2qwQeGxx-7N-ll6aoR1A5cKlgF8aSQ0paK7J0CF5GLzi87zip5laz8aSX7wX5FNwfdcHOZXl--kx32-DKaUYgK8iHNdmjPYE3avuruc3954dRMpHgFpZkUpznUhpAnPk-j-DR9aElGkF3ssjNqOpepu9w91gcteKwU2c6PpuMgoO9mwh0jayG1YfTddOVx19STc6HSfJT1ECR1zbfThvM9lN-N_Wei1mB8XuwFpkp-g25G_PwswPSZ1jqddQxLLy5kYfLhdPlKBW1Bm3RrQ1tAXTV7JtqXX9WIJ9GLc9dS4zTpXBteSP58lUZ9eEswhPEOys_yqbZ2xyWpd0VJNeIoIbV-B_b5aRgLwrea6UciyNoSf4JsBTroXr3FVNI1rWh0hiH5iiTfH8Izq4EzcZy4VnTn2fCXx3RYprV-EHbXZ5fgUp2o432BXhPrfH8mCkTb5jqOjvfNtmNCdiETSBTT5Mh6F8_JeT-Eo1s972pXfm66yCjLUA3KLobH9H0Fer8J6LDsvrUpnehyGfnWvSEKyqXbUe9VLWSjKDyu7Q65l8Z9kB9nD_OJFAa-Gj8BP9ueDgnUNb3DGPyOJvQbBXzhkojmJE77XD905Ec8f49lI9hfDbzD8rFdzPsDh5OTUMKKNNwsS-Bg4Pzg-P5dDzme8xY1160I53YDvlyJg0AeOVNPtXkkTHzAnt8jwl_JpYPWyoGaOayZNmp7Jl8u-_Z9KMDJMmwNZW7_8Lsg-I4jbQ6NdjkUXZZDZZiGSX_trWvOzFiUz0pS0Lrz_jfJjP-LTP6vEqdr47A7_8D4XCPJRll_s_p3RfjlFcEdG0TdTMSXdqmMjpKzM-MXQnRD3JLnqOkujGJibXcgF8eVd7tuv_bApzcTOKEpXYWoIky4EbsBKSq3vOwLj4ZFGWYZ0ob447C0w-Ho-PyqvInLPM7JFdxEw1ESJ1mS5lebm2ERQ5pkYZwMV0UcQTbCozId5mVaJgBldMVucIjjMMI4DJNRnA_CKIxCALLKQ8CQF0ESQkUYH1h4BlKtr9qz6pthGOXDK04K4Lp9JYSxgDfUPgwwDtK7K3XTngMXzVoHSciZNnqvxTDD23dJLb7pHbq75Gjaks8difsXQKj_PiDA-PSbA4yvGsVvfvxYvo32PwEAAP__IDpC_A">