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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] convert-func-to-llvm crash with assertion error "Using `getMemorySpaceInteger` with non-Integer attribute"
        </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/52516782972730ff065a34123a9d8876da08c254

Reproduced with: 

`mlir-opt temp-map-memref-spirv-storage-class.mlir --convert-func-to-llvm` 

[temp-map-memref-spirv-storage-class.mlir.txt](https://github.com/llvm/llvm-project/files/9935324/temp-map-memref-spirv-storage-class.mlir.txt)


crash trace:
```console
Assertion failed: (memorySpace.isa<IntegerAttr>() && "Using `getMemorySpaceInteger` with non-Integer attribute"), function getMemorySpaceAsInt, file BuiltinTypes.cpp, line 534.
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 temp-map-memref-spirv-storage-class.mlir --convert-func-to-llvm
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                 0x00000001048d3a20 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x00000001048d3f3c PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt                 0x00000001048d204c llvm::sys::RunSignalHandlers() + 148
3  mlir-opt                 0x00000001048d580c SignalHandler(int) + 252
4  libsystem_platform.dylib 0x00000001a33254c4 _sigtramp + 56
5  libsystem_pthread.dylib  0x00000001a330dee0 pthread_kill + 288
6  libsystem_c.dylib        0x00000001a3248340 abort + 168
7  libsystem_c.dylib        0x00000001a3247754 err + 0
8  mlir-opt                 0x000000010872d02c mlir::detail::getMemorySpaceAsInt(mlir::Attribute) + 124
9  mlir-opt                 0x000000010872c9b4 mlir::MemRefType::getMemorySpaceAsInt() const + 36
10 mlir-opt                 0x00000001074218f0 mlir::LLVMTypeConverter::getMemRefDescriptorFields(mlir::MemRefType, bool) + 244
11 mlir-opt                 0x0000000107421098 mlir::structFuncArgTypeConverter(mlir::LLVMTypeConverter&, mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) + 116
12 mlir-opt                 0x0000000107420dfc mlir::LLVMTypeConverter::convertFunctionSignature(mlir::FunctionType, bool, mlir::TypeConverter::SignatureConversion&) + 276
13 mlir-opt                 0x0000000107287a0c (anonymous namespace)::FuncOpConversionBase::convertFuncOpToLLVMFuncOp(mlir::func::FuncOp, mlir::ConversionPatternRewriter&) const + 236
14 mlir-opt                 0x000000010728f5c0 (anonymous namespace)::FuncOpConversion::matchAndRewrite(mlir::func::FuncOp, mlir::func::FuncOpAdaptor, mlir::ConversionPatternRewriter&) const + 72
15 mlir-opt                 0x0000000107287100 mlir::ConvertOpToLLVMPattern<mlir::func::FuncOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const + 176
16 mlir-opt                 0x00000001084f7264 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 368
17 mlir-opt                 0x00000001091f7f08 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&)>) + 1432
18 mlir-opt                 0x0000000108517cf4 (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) + 328
19 mlir-opt                 0x0000000108517448 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 996
20 mlir-opt                 0x0000000108516a38 (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) + 64
21 mlir-opt                 0x00000001084faf1c (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 568
22 mlir-opt                 0x00000001084fac4c mlir::applyPartialConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 124
23 mlir-opt                 0x00000001084fb140 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 72
24 mlir-opt                 0x000000010729f7a0 (anonymous namespace)::ConvertFuncToLLVMPass::runOnOperation() + 596
25 mlir-opt                 0x00000001083bf184 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
26 mlir-opt                 0x00000001083bf854 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
27 mlir-opt                 0x00000001083c1a98 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
28 mlir-opt                 0x00000001083c1870 mlir::PassManager::run(mlir::Operation*) + 864
29 mlir-opt                 0x00000001083a6c84 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
30 mlir-opt                 0x00000001083a6818 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 496
31 mlir-opt                 0x00000001083a65e0 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::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
32 mlir-opt                 0x00000001083a64f4 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&) + 80
33 mlir-opt                 0x00000001085a31e8 llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
34 mlir-opt                 0x00000001085a2ccc 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) + 128
35 mlir-opt                 0x00000001083a3f4c 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) + 320
36 mlir-opt                 0x00000001083a4154 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
37 mlir-opt                 0x00000001083a4d00 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2888
38 mlir-opt                 0x0000000104113e58 main + 148
39 dyld                     0x00000001213cd088 start + 516
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWllv4zgS_jXOC2GDou4HPzgXJkCCBEm2F7svBiVRtnZkUUtS6fb8-i3qsmQnMZ1JY9ODCZxYEcmq-upisaSIJ9v53e3NI4qqLFeIKhTzzSZTaK1UKSf2YkKu4bPK1LqKZjAG_-T5S_c1LQX_D4sV_NusgwuXuJbnByT0iW_jNMWeS23HIjYNkyDwvYTiICauM8GXE7xo_j4yIJRUMUvQd2AFfNFweOLhTZ6JKS8VUmxTTjcUftlGsHQqy0y8TKXigq7YNM6plDM9GU2nMS9emFDTtCriqeLTWnAPj0m756YUZ-qHmriXExKcrJw0y5mE7zC0XZs4cHUSUxKORK7_xoLKNVKCxkxL0ump-QByyXPW3F1ICVrIeIFSCnIktXZJAIy52D6VQGCWSTqxL24KxVZMLJQSE_sKpgBjmOnBB77IP2RWrBBQXzF1t1vcrtKK1bZDBS-m7T3wJyWyqFIMlmsU5AJpY9TCjKksJKypx0FEdK69MSuetyWTs7gs9UCeFQy5tjNrUD3cXi2erpCsIu2uFBx4hQQruQAX4ae7byZlVZsI0SJBWRHnVcKQWjPUKDqi8e-1slv2TwpuoKTalL32MQyFD4KvBN0gKlbVhhVKC4E-zXn3WNcK55VCcruJeI4KumFS25YVshIMbXmF1vSFoRpsMyn7A-ySFXpMoIfF82-ICySZqrGy4iUTvNCCoxcqtLFvb7_dLZ_-dXd-f3vz76vHpV6ibQ1KLnlW1NrOahft9YB2gPd_8A_c_FjYCRKbElzLptfaC7mVzcWDAMI1zOfav0mwmyTo9yWXSjC6qV3zAsCoxlHPkU8aESxzEVI7Rnv8nrJVQfPfwBFy8GsSvPAsmZBFxwTiomZCjJkQ7MSv4XysihEv2cfcObKclo1tzMYNcIz2hR9oh7itehwE0RSBGOCPyzKnKuViM0u2cHNAkto2pOnYQUuZrcD3wd80FddriLgjImoNFklaGmMiOGEMo3bG8vcsz1s1tgC9IaG4I7EPkELeDGwHIxrpGK9V5LUUfGMKvu86iAlRr8fN6sBMwYFPEkziem5jvoQpSKjN9avZLNjNXewyYWtf0u6AoTH7OIycAXvg98hSnSPfE0Hz09tBozK7NZ6FjZj6DrGCFA-Y6nSgWV406YmJIW8Q55LJWGQlZLTrjOWJHClhIDHEbcR53rum02rDsowFw2EwEAxSQhWra8iWC7EaSzgU4VD-JonsZnTi7eL1aUPz_BvsE1zcbEow-MXebL1Zer1hrU7HxBQKTtL4uI7bHeG63UDrQFeQ5kf4utGxkvfx7VHuSTX3JawfACJ-B8g2A0QCn0ImArkoFAPbDa9kszWVdTIPd5LelzuO51SyA6D35TPX6miuR0j1xjikNEa5o_sARQgTxSP7LrLO3sOQIH1MOKbwUjfGp8Jr7m6oiteLImmlOQHQ_ugioTrKPoq63yldY5taGB-wUp2BWn6j2DgABHFyVAv3JRNU1R64GIfhQgi6hfwx4vGN5lUTgB_Tg9U7t2eWhp3UJ57zHq_TMe5Gjolrd1ue5RuJG1qpn-LgkMOiLPMsptqDPlncocm6Yn8parPpZIRGpFsCDcIGbWvMN4noauxPExkkW74CPeSPTFa5MqPbFWh2F0OBmeu4lh-nzrHE0Wv7lq1oXa439_P2339Czd95mpmVjkVD7VhdVWuFxmAcJ_izYD4RQRi2kUzMahtA4FHbHMHru_EIwPtiDgGNoTYAvLYEImYlEGQimlpHt9kj8vfDcnTKejXXjoQ-OUovM7oq4OSWxQeh5HZZjZiVTBp67AxLJgrpbPtAhcpoPixiPgDpNXM-w3GeqQMrXgv-B-uM3Jr8ialBwhhq6BJO5QyG3xbgcPodLW-KlL-7pD6e6q31auBM_fGCmBVtoNLIcrCJSk8L2F9PdV1pREzrwTCFevdYHF7sitquYpJtG0BUxX0xEK3vAbh9SjOr0gI7Sq1gWJwMj6i6VLsvNduuduy47-16INe-Pd-29KKg-VZm8o4WVLcBB2eOqpBwsGDJsEPjWp12DestgBS4p0N6yEqmO4Z7_qqn9pK-m5M_hHFcG0k4gutjqW6n6Ur9oHgaTmg4NwOt7BB8MKCduAuL3kftfrMwqwMDO7ZoGOxx7_D0SoN7TBqG-IFS2sSDu1xuWBWBZIGPj0j2jkwN26BXiGH9YlMvhlABUrr5tYgP98DDTmNn9O570CLglYjZ3erQq_TTFYh9xX6ogzz1saJ07MFdqTuWrdtX2xaXbVgSgVICqGZLwWMm5XmVpnX75D2dSJU0Q8ul1VxURfbfii1L_RThYre06U11NF9bmLCUAt5lwnIGR5A3F7cJ-9Aex75_juZHJU7OYvXIVhnoaHuwjT3XLdCHWprec50uyduGdR8YyWXDgLmDq_tS3dGs-MLG-v8o_1QXacOnITkhzhI3l7zOOTqLB_WDrOBrqHLfxKPGFm5Tom1YVYNjOelwqx3b4yMG_KJa6jtRIGyuH-0t03Hr6u-Q-rkhpZ8u57xYfR0NHkZSXVZ0G6jhKcqltsWCv2So_IIZsN9ZzU5yYD0Sx8O2gizzTC2K5GGvIPoa0P8SvvXujNfLWqvrVdqmx2Jqp6N20d_p_dPTe9tF7vKl6emeOtbodP9rWGas5e68fnELJ3bJxKiJ9XPUvff0vE90pt0A6iT47SNE28uI17TpWuwdW5-UyIqVbqUa4-venOne-bDNmgOOZdnMhbkg195bMSFKtnlysHhMgFh2nOAgAJvT9qURt3s8378sd8bmluf5roN9xzpL5nYS2iE9U5nK2XzintcI3Uv02htZ7dth9YtvtH_PjgnBxSe8MndWiXz-8VfZ3CDA9tl6nkShh30viQLPjXwnSVLsWQ6Nwtj1A0zYWU4jlkuNFZgW7DuqSeh39tzLs2xOMCEWGAO7jutYM2K71IsCy7GIT5PImTiYgYHymZZjxsXqTMxrkaJqJWEwB3eQu0FQk-6Y1arV9Gml1lzML3iec_36XiXxWc1_Xsv_P-yW3bY">