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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Crash when using --finalizing-bufferize
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

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

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

<pre>
    I have the following MLIR program:
test.mlir:
```
module {
 func.func @func1()  {
    %0 = "tosa.const"() <{value = dense<0> : tensor<i8>}> : () -> tensor<!quant.uniform<i8:f32, 3.0757404601899907E-5:-128>>
    return 
  }
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --finalizing-bufferize test.mlir
```
And the crash backtrace is:
```
<unknown>:0: error: invalid memref element type
mlir-opt: /data/tmp/v1005/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:179: static ConcreteT mlir::detail::StorageUserBase<ConcreteT, BaseT, StorageT, UniquerT, Traits>::get(mlir::MLIRContext*, Args&& ...) [with Args = {llvm::ArrayRef<long int>&, mlir::Type&, mlir::MemRefLayoutAttrInterface&, mlir::Attribute&}; ConcreteT = mlir::MemRefType; BaseT = mlir::BaseMemRefType; StorageT = mlir::detail::MemRefTypeStorage; UniquerT = mlir::detail::TypeUniquer; Traits = {mlir::ShapedType::Trait}]: Assertion `succeeded( ConcreteT::verifyInvariants(getDefaultDiagnosticEmitFn(ctx), args...))' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/tmp/v1005/llvm-project/build/bin/mlir-opt --finalizing-bufferize test.mlir
 #0 0x0000563be5dfb43f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x158443f)
 #1 0x0000563be5df84a4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f80a1390420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f80a0e5d00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f80a0e3c859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007f80a0e3c729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007f80a0e4dfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x0000563be923c32d mlir::MemRefType::get(llvm::ArrayRef<long>, mlir::Type, mlir::MemRefLayoutAttrInterface, mlir::Attribute) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x49c532d)
 #8 0x0000563be6389280 std::_Function_handler<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&), std::enable_if<is_invocable_v<mlir::bufferization::BufferizeTypeConverter::BufferizeTypeConverter()::'lambda0'(mlir::RankedTensorType), mlir::RankedTensorType, llvm::SmallVectorImpl<mlir::Type>&>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::RankedTensorType, std::enable_if<is_invocable_v<mlir::bufferization::BufferizeTypeConverter::BufferizeTypeConverter()::'lambda0'(mlir::RankedTensorType), mlir::RankedTensorType>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::RankedTensorType, mlir::bufferization::BufferizeTypeConverter::BufferizeTypeConverter()::'lambda0'(mlir::RankedTensorType)>(mlir::bufferization::BufferizeTypeConverter::BufferizeTypeConverter()::'lambda0'(mlir::RankedTensorType)&&) const::'lambda'(mlir::RankedTensorType, llvm::SmallVectorImpl<mlir::Type>&)>(mlir::bufferization::BufferizeTypeConverter::BufferizeTypeConverter()::'lambda0'(mlir::RankedTensorType)&&) const::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>::_M_invoke(std::_Any_data const&, mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&) Bufferize.cpp:0:0
 #9 0x0000563be9123b81 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) const (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48acb81)
#10 0x0000563be9124b2b mlir::TypeConverter::convertType(mlir::Type) const (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48adb2b)
#11 0x0000563be9124d1d mlir::TypeConverter::isLegal(mlir::Type) const (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48add1d)
#12 0x0000563be796bb6b _ZSt9__find_ifIN4mlir17ValueTypeIteratorIN4llvm6detail27indexed_accessor_range_baseINS0_11ResultRangeEPNS0_6detail12OpResultImplENS0_8OpResultES9_S9_E8iteratorEEEN9__gnu_cxx5__ops12_Iter_negateIZNKS0_13TypeConverter7isLegalINS0_14ValueTypeRangeIS5_EEEENSt9enable_ifIXaantsrSt14is_convertibleIT_NS0_4TypeEE5valuentsrSL_ISM_PNS0_9OperationEE5valueEbE4typeEOSM_EUlSN_E_EEESM_SM_SM_T0_St26random_access_iterator_tag (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x30f4b6b)
#13 0x0000563be9131b08 mlir::TypeConverter::isLegal(mlir::Operation*) const (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48bab08)
#14 0x0000563be63867e3 std::_Function_handler<std::optional<bool> (mlir::Operation*), (anonymous namespace)::FinalizingBufferizePass::runOnOperation()::'lambda'(mlir::Operation*)>::_M_invoke(std::_Any_data const&, mlir::Operation*&&) Bufferize.cpp:0:0
#15 0x0000563be911e4bf mlir::ConversionTarget::isLegal(mlir::Operation*) const (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48a74bf)
#16 0x0000563be911e63c mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) DialectConversion.cpp:0:0
#17 0x0000563be9132222 mlir::WalkResult mlir::detail::walk<mlir::ForwardDominanceIterator<false>>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48bb222)
#18 0x0000563be91327c2 mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48bb7c2)
#19 0x0000563be9134d39 mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48bdd39)
#20 0x0000563be6389c6f (anonymous namespace)::FinalizingBufferizePass::runOnOperation() Bufferize.cpp:0:0
#21 0x0000563be908a4f1 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48134f1)
#22 0x0000563be908a9ca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48139ca)
#23 0x0000563be908ad5e mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#24 0x0000563be9089a38 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x4812a38)
#25 0x0000563be908a276 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x4813276)
#26 0x0000563be908a9ca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x48139ca)
#27 0x0000563be908b514 mlir::PassManager::run(mlir::Operation*) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x4814514)
#28 0x0000563be907ca1b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#29 0x0000563be907d3e4 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) MlirOptMain.cpp:0:0
#30 0x0000563be907d594 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#31 0x0000563be918604e mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x490f04e)
#32 0x0000563be9074e39 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x47fde39)
#33 0x0000563be907d701 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x4806701)
#34 0x0000563be907dbc6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x4806bc6)
#35 0x0000563be5d12acb main (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x149bacb)
#36 0x00007f80a0e3e083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#37 0x0000563be5dce62e _start (/data/tmp/v1005/llvm-project/build/bin/mlir-opt+0x155762e)
Aborted (core dumped)
```
My git version is bf895c714e1f8a51c1e565a75acf60bf7197be51.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW91S47iXfxpzoyIlS_684CKEpDa1TUMRZnZrblyyLDuadiSPJAOZp9-S7SS2SWjozkz3zP67qCaxjo7O-Z1PyYJozQvB2JXjXzv-zQWpzVqqq2ciiq0Uxe8uuUhltr1agjV5YsCsGchlWcpnLgpw-2n5AColC0U2Dp468MaBU8O0mWxKrvZPnAB2P83XjczqkgEnvG6_g7wWdGL_A44H7W_XQZGDYtCjAQA4yIfAwTfAQchITSZUCm0chDpqB8-c8PqJlDVryDImNHPwDDp4Dhw8BYYJLZWDZzxy8NwJb3YDHYNL-31P5CD3j5oIM6kFz6XadPOmOUYOmgE8gaEfetALoBvFcQzD-aXv4OmlixrueH6QXDFTKwF2D-zKLTD7D0OEHtcMkFQ-sQHC4JmXJaCk1gwQQBXRa_C8ZgLU2hpjaBoqNxsispM2KLm6lJUBl5c5F6Tkf3JRXKZ1njPF_2TgYMRjs6cia5ZrZUgJ_WIUoQxwfWo9B89q8UXIZ9FgM4UWdqaURXoKuHgiJc_Ahm0UywEr2YYJA8y2YkNxW2MtMmKIgxZmUzlo8eRC6DtoUZZPm8tKyd8ZNQ5aNMKjBRe0rDN2eLB8cNBiZaQiBftF8D9qplZ1VUllJmsHT90wtotoQwynYCYFVcywR7BzaDzNmCG8bD_v-GimrknjbPsZ1kfss-ZDR9d87hZtPj8qwo1uIXHwtGDGQdFhKWv9mRSGvRgHTe2EqSq0gwIHBWAymTRe718_c7NuRtroCK8tFC2HqVJk-8ByB89KKQrAhbGrWQ6znk6PFunxw1u2eWD5J7KVtZkao5bCMJUT-prSjvK0Ns2IDavrHnJWpjHTZj183QI0orDPhlQ79EaEfUMcJnTEdt4O6Tfm2RkdmZ3R2mMH42HKak0qlrXyNNMsndXUv7HeMtWaKcOlAE4AdU0pYxnLHBQdYGjnPTHF8-1SPBHFiTDaQVHBzA3LSV2aG04KIbXhdL7hZiEcFFHz4qDYgk1UoVuLNz8hyAkvWTZp4-P-03y6mgNdpxtuAAFpXQDFrFMDI8HamKqJTLRw0KLgZl2nEyo3XdC8jh2udc20gxaAiAx0IXQs4rvlV4bQLyCrN9U-_uEENP_uu9xFVFHboNYfCOG05mVmf3PRxe8HUhZwEIYAvkAIoR_glPlZnno4B4fg0FvdfrhXXJhGiUfV-Hd0IFLkOZHaKEY2nd_bGLKBZ4vGd-jhoGv44vqR5-Hc2nQvtTuSOvKIB1a8EKT8LyKykikHRZ0Q7WM9oVXVZVV4YIQ6RmEeQeLiGHoIgiRRTBupWKJMp0PJUwctXqIgCbzLkov65bIQdTtQmbViJJtoOYGtxJ6H4EBe3F8GMj-DMAWKcM3ewZ9azkHD2cMQpgPO3pAzppEf28L4Lsl7nBGK_HjA2R9zDvcWfTfPEA15BkOeXpZnwcd4YpxnwYBn2PeFGGGKUXYimx4KyMn036T-13n_nUn_RMY_UyR4MfUxygbaR33tAxzFKIJAm6yVIVnUgtqsm6y7sMCz_aCs7AgpreZ7OD7JglNSPjBdl6Zp_vrVdgfGgX61IWX5K6NGquWmsrxG1F0pbTL0fmkmSFqyhFvUuU64eJK0efI0YLDLXMQK2pW-XTKzzGdSPDFlmHpzrOlcWwoHhSXZpBmBDgoHmj0Q8YVlj01n22oZD835muAbYGidaw9D3lnnB1qlbcObAdtLjhx_BPCzItWMlKUtbgOex8D5Vxn7_5PhfhqTWF2jn0aaZkthc3m7px5y-DqDb7byPxWC73Xupn7dNunii-03D0VtKraJLaWdGCd3asE3Lg_2uB1vGuNBx-EinEbu2_FH26-tZOfBqFX-TI1FRGgaufvGwnbYcKSkl6L0e5Q8t8BZitKBwO5Y4MzN3haY60-sIOXfIWzmZgNhUV_YMA7SNEhB8tvKxEmSc5ElPF9-9iwbN_yVlHUTwUvDFLGO8dmzqwftLh2FXGTshWUJoZRpLVWiiChYkhLNlp9XMHHdtv482Mfze_uom-uiu6ods842tyPR7sl8FSerOJlHvFt2Pp9_jpOkEHVCX178JJGVdlFipUoEK4hhy98-_7ddDw_ADjucW1m8vTqNOMuVn8wt55WJ943C8n-J3fqrlXE9rpPOsXhasuVjYrl4dv587jcnmQ3lp2S5uk0a3eK7ygrMpdhRzNO5Z4vk_G51m8x_KVefk7lddXWbtD-PMFkZFCgiMrnpcEx2eieGFOfxBAxzLw2GbouHbovdFEYfd9u9ys0h2JndNyUpjAZCe6NdRxAy_PFdRypl-aonGmlis6ODIiKk2G5krYEgG6arZrfV1bDF_qhjn7fvie7OLVQt7kSP55HSNy5cYwm-qxgNmQVfLzAWXn_oEy7z0rzHs_UHzaV4JMruZ3-MW5DQS_OBWwRjuQNMe3L_Dym_tLmlV_B2rXSimj34Uep3mYd2_W2SiwGfPf3xcrUf1qeOBU4sbQvxN7gSippjhjecJAY3nJSMmoOdj7tJOEodCCF0HO7jJ7vPpBzuBhZSPROV3cgNF0TQfcFx8CwnpWbdpuO0hrMzG3aAkp13pzLbwJ7rQCVKU4TQwIejMaghRcdM9Vd40_m0CulQq1HLir0Mxz2tSFWV20VdlgeXe9PKp3PRiTS4UPJPJh7Ys-KG3RNjmBKrk9QHpjMpcl6cE5osw3EfGgTHJ2g0yM9ecr6S8dGweYUR8XL3RNTeVY_yrrLLTTNSNdHZrTowWSPP2Fqn7TgVpNxqrm-JIIUNsRloyjOagVo077-zs57qe5GLvXyw5UBoDEJMyYdBuOcVK7lgI_-1pHvd3qzR34RKf5Jdaim0Uc3bHKlecR0S9PbyO9nviWLCLEUudwEyPSvwMSUD4PEY-MxnHwa-5_NTvRW02b6iqMXra4XyfEvcVfe3FrndSULbc3Z1rG3__o6Fu1bLMjse8d4I85jg6MyYn81hEMGD_h_5Y4dBYfCvT1coDAYgBP9JVz8mXYUj4FPf9Uby7hA46mvjdvtcgnq-6w0EHfaSMKTETUHFVC7VZkpft4mvX6Tv95l6TRTLksqowfuFlawVZbeFsvvo483U6xsyvbGSq7vK3BLedVo9HjHojR7PYfFIvwwzD1RKUqZ12_C8V726uWDySr1btpFqu2PVo8_a-yBJxkpm2Ok53YblvTr36bpN2AMruDZq--o4-bF5638vZdl7ATx9D27DSxcWNz_2wImXRqd3VKcm9I8n_nJcT1v36zvzHk4_oZ8ct_87Y-dou_PTWOVwBvFTiPT1gBmd7UcB9PoNqq5KbqYiux-lnh-h3T8wSN-kGLycMoqL4oHlJx-f7aYLzKHH-sUUj3aHoccGRxj_4mRyJkzDPGPDsw-Mx4UohO5JTLvOka5J2yNOP-ocXwPkbJ0YDEI4OFrA3ljRlAZnUfRv0yilg90H9odXIF1EaAo2hIsz3br04pTQwauq8e09zGCEQZKUPKWJNkSZpLf-e-8IejDCg1XCoWKUBYiBlv-5LpT6YYAOyWWaSmVYZplTqVhzSZf1XtcOr-nfbkHBDejOJwHXIM2j2Keh6zE3j4jvUpf5gU9Cn9A8gGkeunGYMt-dXGRXOItxTC7YlRuiyHUjhKKL9VUcep4b4hDGJM_CGAWRx0KSs9B38xTT6IJfIYg8qymMfIiiCQxyjBFmHk1xlkeh40G2IbycWBgmUhUXzQXlK9d1kedelCRlpW7-gAWhxmURcvybC3XVwJbWhXY8WHJt9IGD4aZs_uilmeDfgNn47ymOXzO-qFV59e0XqjuRn67Q_wUAAP__Q2Di1Q">