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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Convert-spirv-to-llvm Pass triggers Assertion Failure "expected non-null subtype, pass the context instead if " "the opaque pointer type is desired"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </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/a5ddd920
Reproduced with: 
`mlir-opt --convert-spirv-to-llvm temp.mlir`

temp.mlir:
``` 
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> {
  spirv.func @func(%arg0: !spirv.ptr<!spirv.matrix<3 x vector<3xf32>>, Function>, %arg1: i32) -> !spirv.ptr<vector<3xf32>, Function> "None" {
 %0 = spirv.AccessChain %arg0[%arg1] : !spirv.ptr<!spirv.matrix<3 x vector<3xf32>>, Function>, i32
    spirv.ReturnValue %0 : !spirv.ptr<vector<3xf32>, Function>
  }
}
```
 
trace:
```console  
Assertion failed: (pointee && "expected non-null subtype, pass the context instead if " "the opaque pointer type is desired"), function get, file LLVMTypes.cpp, line 251.
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 --convert-spirv-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 0x00000001003485bc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x0000000100347624 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000100348c54 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001a56894c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001a5671ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001a55ac340 abort + 168
6  libsystem_c.dylib 0x00000001a55ab754 err + 0
7  mlir-opt                 0x0000000101a2d9b0 mlir::LLVM::LLVMPointerType::verify(llvm::function_ref<mlir::InFlightDiagnostic ()>, mlir::Type, unsigned int) (.cold.1) + 0
8  mlir-opt 0x00000001009d6db8 mlir::LLVM::LLVMPointerType::verify(llvm::function_ref<mlir::InFlightDiagnostic ()>, mlir::Type, unsigned int) + 0
9  mlir-opt 0x0000000101278ddc std::__1::__function::__func<std::__1::enable_if<std::is_invocable_v<mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3, mlir::spirv::PointerType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>>, std::__1::function<std::__1::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::spirv::PointerType, std::__1::enable_if<std::is_invocable_v<mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3, mlir::spirv::PointerType>, std::__1::function<std::__1::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::spirv::PointerType, mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3>(mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3&&)::'lambda'(mlir::spirv::PointerType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>(mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3&&)::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>), std::__1::allocator<std::__1::enable_if<std::is_invocable_v<mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3, mlir::spirv::PointerType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>>, std::__1::function<std::__1::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::spirv::PointerType, std::__1::enable_if<std::is_invocable_v<mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3, mlir::spirv::PointerType>, std::__1::function<std::__1::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::spirv::PointerType, mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3>(mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3&&)::'lambda'(mlir::spirv::PointerType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>(mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&)::$_3&&)::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>, std::__1::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>::operator()(mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>&&) + 84
10 mlir-opt                 0x00000001015869e4 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) + 764
11 mlir-opt 0x000000010158b0f4 mlir::TypeConverter::convertType(mlir::Type) + 64
12 mlir-opt                 0x00000001011a3cbc mlir::structFuncArgTypeConverter(mlir::LLVMTypeConverter&, mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) + 100
13 mlir-opt 0x00000001011a3ae8 mlir::LLVMTypeConverter::convertFunctionSignature(mlir::FunctionType, bool, mlir::TypeConverter::SignatureConversion&) + 160
14 mlir-opt 0x0000000101298a24 (anonymous namespace)::FuncConversionPattern::matchAndRewrite(mlir::spirv::FuncOp, mlir::spirv::FuncOpAdaptor, mlir::ConversionPatternRewriter&) const + 156
15 mlir-opt                 0x0000000100ebbc04 mlir::OpConversionPattern<mlir::spirv::FuncOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const + 144
16 mlir-opt                 0x000000010158ae34 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 200
17 mlir-opt 0x00000001017e7bd0 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&)>) + 1440
18 mlir-opt                 0x00000001015954b0 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 1948
19 mlir-opt 0x000000010158eb1c (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 928
20 mlir-opt 0x0000000101590d18 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 80
21 mlir-opt                 0x0000000101299c20 (anonymous namespace)::ConvertSPIRVToLLVMPass::runOnOperation() + 600
22 mlir-opt 0x00000001015534dc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 420
23 mlir-opt 0x0000000101553a0c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
24 mlir-opt                 0x0000000101555388 mlir::PassManager::run(mlir::Operation*) + 1148
25 mlir-opt 0x000000010154e840 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
26 mlir-opt                 0x000000010154e410 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
27 mlir-opt                 0x00000001015b902c 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
28 mlir-opt 0x000000010154c838 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
29 mlir-opt                 0x000000010154cd2c mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
30 mlir-opt 0x00000001001eb0a0 main + 108
31 dyld 0x0000000104abd088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWktv4zgS_jXKhYhBUQ9LhxwcJ9kJkGyMJGhg92JQYtnmDkVqSMrdnl-_oB625EfH6cnMZhbdCNqSSBbrqydZJDWGLyXAlRdde9HNBa3sSumrqRJClUrbyuCLTLHN1ePD_TPKKi4sohblqii4RStrS-MFE4_ceeRuye2qyka5KjxyJ8S6-7kstfoP5NYjd804j9zRiDGWEuzhGw9PnqHUilU5MPSV25UXTFDT4MW4EFxfqtKiy8tcyTVoe2lKrteXVl066shCUY5cLy9uyTX_774Hky215q-lXtMZFYpVAtCDWvKcCvSPh5eHMMJIw28V12CQR4Km4zoHL5iu_RH2yBR50fXLijLQXnTTvrun4BZ54-uGPkLNwEUlc-SF2P16JPFIRPUS1yiJ33QprfaC6fa1oFbzb14wDdA3tIbcKtccfFsExAtu3R-ZortK5pYr2b42ZH1HlgfEIym6rLkZTnFIbEgJeYT8U0nwCOkB8UiEkRfctIAmeQ7GTFeUS9Shia47BqIb9NHYHKBWpJ1Qn8FWWn6hooKOvYM53wLb0fTGN62FbB86U-kE0JiUps4G9s0pV9IoAajtNTEGtJsBLSgXwBrGklJxacExG3skdnKGbyXkFhiSSl7KSghkqsxuSnBsltQYZFeAciUtfLOIS2OBMsQXqFYOIa5VlfS3ClBDXCM3GnGDGBiugXnEGYIjt2hRoyXY-p07m3_48vi6KcGM8rJ0XwWXgEjkjxoks4fbycut48p5O0VZtUQaXFxAVr3f-7kxFRiP3CEqGeIyFxWDBqOmZoUymv9ai7id_sXS_FfEqqLcyhyPPJzOtFpqWiCql1UB0jom0DvixB7xOuaoyiKzKTIlkKRF7fYJSFNpQBtVoRVdA6rhNJ3476ARl65No9nk9RekNDJgazQg11wr6VhDa6qRF2Mn6fnLvx6vnx7u_337PHdDXCCyqlGde3CBMd0hRTtI-Btu_vkYB2ESZXnNi-sbTMzGNA8zzaWtYb3WdkqSXSdNv86VsRpoUdvfFHHppkMeuUZR3Ezp96bc_zdkYRyT8BgLz5V84UtJxS9UMgHa1OGumcX3Wx8mp5HlUYgGBDyS9BgNwrAhESAkeGY2xkIxLwW1C6WLEdsInvVI0ihO0jAP0dzwpdW0KAdwwwERu9JA2TEaYx8Ao7bD_FcuRE2GJElDJ-rTyY9QiGgehBjRzDlOLYq4HRq_PTQbRyECreuBbTgan6conxKWZhh1STCYODPcPc2aoOEiQPNxDZovNgPD6eLGXMPCC6Y7UvfyTvDlyt5wupTKWJ6jRtltmN31fG0jWiXrtQbbmV4yypVgI7_TbwsvOWEgKYtZlnxeOFsA6XEAPhknjOXIWNaQms_97mGxzUq7dy-YHnYFSTMBc77ot3Iz53Kt8rppPQBWqrIS1MLL7P75y6vqQv60jpHGzUiSoUR3zdY5YNxGJRfow3kwFEYdYtvw0xO_SyVbmb8UVIgvdSq-L0ox4K5R1m0bk3ZjJlrTzfOejrrOjUYORbOT4RG5qdI10eH07aLvGUwlbLP6SQ41_SdCaezL_bmvdfYedtopov70VdNySoVwqXJA8LQi_qYm9FPJ71Hyn6gsByD5M40hHn4bC1pkjHpkPKD0P4k0bfj_BPD_GrBHPY4KoXLabKT-psHkZz76PKHqb2pCP5X8Mx_9zEd_vZkedbpP7VcNg6DrlNnsIQ8ZiQ9Ifzw7rSbrnWnSVk58fF7pIEriFMLvx4W2ztYA-hBRN7yO445Z__g-OkoyvPhDzDUTbech5wnFp0Ge5f1cYXWV27tK5hO93HOsN93uWFHhR0Xm47b04AfHRebTgMJ-7eS02LoieV2Ms5UeyrBr7bjOlBKHePYob0n1Y9MOQFdq98MTtZM0oSR0Pk2lkptCVaap1JZ1rTPdcbajP6PWgm5rKgW1-Woi2TN81dzCqWDuKDyVJ5cETfOE0bL27n6vg3nbmdogi3IlTVv_21Zco_MqrpBlOe4b_FN5BOXxzNwC6iLT98TwVEetWjGTMwJNffhyUB97hxi6cq4fnxuUKATh9-Z6P8Zdy1vskq2PjY-b6BjGGcOHFCdlKXi7g_pY9voq2ittOp8cZsCWQIOoS_K33yWyVpz9YSInMvR5dNPOUjrZJ2eaShqFGX4rXGyl_QBLWh_qNN9F-3qmat4y-RpCGrZFfz89ldUg8_OzWT4euLfNZlD3Puq_A0DvtoRdpfxAXSlpoRJ8AmqKmd_PRrQsxWZGteVUnFi7niP-V6rr88297Hqn1e_QKaVV0QvYnrH1kd-ANPAC9rSsDrs_0vJeLtR3hzgRduWCyXZd1to18c-za5KmOXnTrlvb6G0KZtS0Z3S6kk-yx9v2gC7u4hshJ7QWBSHrL38YWMpFh_ZVPZVumi45drPt-bkxBwo8rdqJpGJjuHmkki5B9xcbx85fwu5GCTmxDIqigOL3Q5jxEgSX-_HAdd1yFn84pmH0N-ZeuvVmAbJeehykh34HujtL6nifUQ3SOivt7H5rhMFWbOGZ0TWKgiTZm73Dc1TvQ3F0J8JdSCTRCXWFkIQYlaAXSheT_DCwHR5sd7Lsfg93j2ZFNbB5c0ekt-JWlc7hcand3rEfGnYoHh_un6fNfYyDOPBjWW9oQF0uHWJoT-lxu1oi566WQgj9wenvgJEf4fxQlpXkv1VwIMtHKJTeXFeLRWPghwMZLGgl7JyBAAunB2_rq6d1vtt2522Var4YLocfBddPpX2kXL5hPZ8D4Ufa0iBjC8jtMyy5sXpzwl_O--3VjHBTkxJKLj-PBA9spKksbH1ofKYPZSkmgx1_KbidSDbTKgdjOu4_iWf8X3jyd3scj41xt6EmyalEkidBP2H9jAgfHhGaTbLfaSI9N0vlbOBhQ820C6F8RZslz17SfbGay6Xb2JyNq117ENyuPYLjexTsQ4YpRkVzyfUa-dsBPmIbwfqdQ5oxnCTIWNpe8Yo6OezdFb1gVwFLg5RewJUfj4M4StMxuVhdLRJKGR6HEMcZo5GfsRjHGNIsY4soT_EFvyKYBNj3Q-wHJCKjRezThb8YE5awIMoTL8RQUC5GTjwjpZcX9YXLqxhjf3whaAbCdPe89VV9mTGrlsYLseDGmt0wy62ob4TXAo1u0PTohcpZfUNV8-UStEG7W693lItKw192w_Wi0uLqxy-j1uL5bwAAAP__wolSjA">