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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] -finalize-memref-to-llvm crashes
        </td>
    </tr>

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

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

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

<pre>
    git version: bc29fc937c6cb4a210f80c93c79fc6ed97c801f8

system: `Ubuntu 18.04.6 LTS`

reproduce with: `mlir-opt  -finalize-memref-to-llvm a.mlir`


a.mlir:  
``` 
#map = affine_map<(d0) -> (d0 + 1)>
module {
 llvm.func @malloc(%arg0: i64) ->!llvm.struct<(ptr, ptr, i64)> {
    %alloc = memref.alloc() : memref<1024x64xf32>
    %0 = builtin.unrealized_conversion_cast %alloc : memref<1024x64xf32> to!llvm.struct<(ptr, ptr, i64)>
    llvm.return %0 :!llvm.struct<(ptr, ptr, i64)>
  }
}

``` 
stack trace:

``` 
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(const From &) [To = mlir::LLVM::LLVMPointerType, From = mlir::Type]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' 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/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt -finalize-memref-to-llvm /data/szy/MLIR/seed/seed0/tmp.1XEffPECLs.mlir
 #0 0x000055f80c4e5348 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x111f348)
 #1 0x000055f80c4e2e5e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x111ce5e)
 #2 0x000055f80c4e5cdd SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f65c64bb420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f65c5af800b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f65c5ad7859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007f65c5ad7729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007f65c5ad7729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007f65c5ae8fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x000055f80f1492c0 castAllocFuncResult(mlir::ConversionPatternRewriter&, mlir::Location, mlir::Value, mlir::MemRefType, mlir::Type, mlir::LLVMTypeConverter const&) AllocLikeConversion.cpp:0:0
#10 0x000055f80f149081 mlir::AllocationOpLLVMLowering::allocateBufferManuallyAlign(mlir::ConversionPatternRewriter&, mlir::Location, mlir::Value, mlir::Operation*, mlir::Value) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3d83081)
#11 0x000055f80f14896d (anonymous namespace)::AllocOpLowering::allocateBuffer(mlir::ConversionPatternRewriter&, mlir::Location, mlir::Value, mlir::Operation*) const MemRefToLLVM.cpp:0:0
#12 0x000055f80f149a40 mlir::AllocLikeOpLLVMLowering::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3d83a40)
#13 0x000055f80c7e2124 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::ValueRange>, mlir::ConversionPatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x141c124)
#14 0x000055f80f44d644 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4087644)
#15 0x000055f8124b6591 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) PatternApplicator.cpp:0:0
#16 0x000055f8124b325b mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x70ed25b)
#17 0x000055f80f44e713 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#18 0x000055f80f44d767 mlir::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4087767)
#19 0x000055f80f44e93f mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x408893f)
#20 0x000055f80f454afb mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x408eafb)
#21 0x000055f80f12e2db (anonymous namespace)::FinalizeMemRefToLLVMConversionPass::runOnOperation() MemRefToLLVM.cpp:0:0
#22 0x000055f80f3f03d6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x402a3d6)
#23 0x000055f80f3f0d00 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x402ad00)
#24 0x000055f80f3f32d2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x402d2d2)
#25 0x000055f80f3eba4a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#26 0x000055f80f3eb69d 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&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#27 0x000055f80f497235 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/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x40d1235)
#28 0x000055f80f3e5685 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x401f685)
#29 0x000055f80f3e592f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x401f92f)
#30 0x000055f80f3e5c5e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x401fc5e)
#31 0x000055f80c4c5e37 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10ffe37)
#32 0x00007f65c5ad9083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#33 0x000055f80c4c59ae _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10ff9ae)
``` 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl9z4yqy_zTkhYoLoT-WHvLgceK6U5XUpJLcqfvmQoAU7kGgBTQTn0-_BZItWfk7c8Zzdrd2amJbAnX379dN04CItaJWnF-A9BNIL89I5x61ufj-fZdFRXRWara7qIWD37ixQisQr2BJcVHRIl7SjJYJwRGqckSLmC6LimacFUuao6jKAVoBtLI763jjnwMZ-t-yU66DUb5AySKD1w_3IEN9P8Nbo1lHOfwu3OPQv5HCnOvWQXheCUWk-JOfN7wxvDp3-lzKbw0kC9_pIAag1XAnXkHob2So_x8ucNyQFoL4EpKqEopvG9KCeA1wzhDABTwH8RUMVxDgTzACuADxFUCrRrNOcgiWnwBaQa95UXWKQpCghkipKcA5wCkxNfKaRZbsxQEche7WmY66XlnrDMBrOHz1nYPmXjyE0MvyYoOtPeTFqKeAXkl_G8TrCOHkKUueqhj31g4SUHi67IR0Qi06ZXigkG2pVoNDt5RYN9X2qljo9A9AGYwI3Q13nVF7g1Y_KgUsL73r-s-ZQ60j9A_oDKHcS37eYR9BIaDwhhFHAN7YP3cAb26uP98BvPHGnBsuObF8f9ka_f-cuuES4I1QVHaMjzfuu7bVxvdYE-uEqhc-aNMs85oYp9LtWg5wTjrPWxGY8CbGK884wDnVyjq4MbqBAGfBp-mnB907vA9gEK-ur7_ejL9utVCOm4cgej08fNQ_NKWX3oiVtdw4oZUfScISEK8fdAjI_CuRQaHXm0GAcbApXj_s-nbfSEzdNVw5qCsoFNVNS5woJYc9sAhgDPASVkRIzhYArW6vr1b3V9B2ZSMcJLDsami4Jwk6DR-da23w_gbgTS3cY1cuqG5GRmfEC2s7bgHeQKIYHPiH7pFDaoh9hCWhfwTHe933IQ5Y17R9GKAFDP9uja4NaQ5g7E_HgR9FzH8LBfDmkJhezUuvKLGcs-ELAbxxTbuI_u-qqm6v1te2T1zIWxgjiJ4QQihNfXZNeBon-SSI7M72P26NUC7AfwijAOdjJ0O-b7V1hpMmuHoNhXK94_NfSALAn9BTFEVVnPjIGQBEMwCYp_wlAHeduhe1IvJ_iGKSG7vPcCexkfKUjzbiOcmUMXhkDcD5wFl_2y5o62MMhb9eSjxIWVZZSrOkLBOM4HZruHXa8K1xAxYpSoA3T3m2zZJzKVT3dF6rrm9o3aPhhC2sXqDe1iTBaLQ0mepISZUjVEJDhOVwgrmWoqTn1_QzRk-HS7yII09hsB_gzWLhr3aW8dYPr06Jp_7Gt2CK6vxlEL2gPqVFIF5FgxnpsRlsmacFJKUOGD9mhmM9D-GpoCH3GpaDhmyuYYkLWHO37S3eWl77gbz9RmT3YexCOY9casIaW1PS601R4bUPipcvKd4qufVPbZluiFB_TV-x9FETJ4PC_FghzyuWfSBSqI-RLMRIHFcsG2OkmEZzFSUFpgj6zL7yc_umU_SO2076yWecMNaHUuCWOMeNuuPfjXA-8kPGmExFmhI_nRzf_er9cHzrhjd3vNpPUrO56Vjk9dcbf7c3wnEDw6w4zIfB7GvxBx9tnI0-n2bQHDXKo4mKICTY_aX16q71d26EqvtW0rfyT11VcXNDVEek3K2kqNWpWfrScjP0XL3YuejJOEUijFkeozzqQ8eTGM1IzIuMecVEabVrdGehIg23bZhhigmzX9q3CP29HO4JG-JPe3e_EDB4HjAkQfOA8VH3Urw0xNHHlWKD6Uf45g4d57qVMWR3F2rqORxfbk0RvU3SiUOCJGgMifhoblxyHOHkLUNPQ9AdUfW_EEtREtEIJyNLyVEwJQnLkl_M0tjym7EmKF9myQRrOsEa4aTM0iKC37RgE0_6RbE3ftsvIUNrX9B5Jw7rHyl98b6t1JG_B3irtpWCEqfNr-Zq_bqdpdYSHokeBEwnpCEM3wX7l4SMDde6FpTIfs7-mNwhMwOcbFG_kpNa1T5KnpH7QmLMZv6NcVo-p_S__vkL_jnFOF0iznBajuN0OctJfBnF703mB09d8zqsZwckcrj8oFvfS8yXgkhO3ZsFXT5Pqcts-dKcfygah7TSX_5kyTGvJE6UT5fZcvRTMfdTEVcfB3potkdr_hen0iN0JwvEBOV5EVcHgPi4NE_ShFTThELaVu5uiXGCyNFTPxxpD8TU3E3G2rTbxug_-d7tQxDcv9p7FLrWqhL16YjipBpHLJ6V35hjVr43YjfDxtO02p3Gux32V0ynvqgJj2Fz5e0SGR-XyHGFYpZNaGLcESH3HnrQX1qvbsVIe5gVTKdmGdHaZz583bsrReTOCntDFKl52BT2U4D_7lQ4sWAn3MtKECbxfmXt-YjnfDCEfpiPW9FyKdQ8lfquB5hvZqWfIuh40rX2s7LOhL1QbV6Ylacdes19w2D7LTFcuc-q0vsRdLpsiQlD43oEJzMfxJjhmel7Ml6MwN-S4THDDI82p8c285IkBLbcVNo0K_o8eT_fsLWODfulj8Rwtm2dOSpC7nVnKL-pDYivXklqHtVaK8ef3DOH30hhvrTuhogh4x1twExaX0gS2RxcVkxXAsfl0c_UUwfsnRL_6Pgz7De80Wa332mYcMV4RTrptoxL7vjrz_gVyazam3vg_WXLhKSP-vLkeEbrhoLrjtfCOrN7HhxvBcArq4nfieQNz7wTnrMquFjiOJ0At60UbqXYrdGUW3vYr_o7oP0bDok3e0zb7p0RqvYF6Wu3T5SKWYTjdEzF-SxbpVmevjwO_tNG8Wnojaosn9BbzOktcPUqvUNhQh9JX4KsfjRk3uPmZJgLPC5vjo9oPWaa8l-C-W8CR_dHox7c7PiWpjxewuEM7Ndvq6Kq4vG4ND4czO4P4wqUx3C7laKkW-uIcdsfOY6jttufe_Y_Q2OQEw7m4gT7z0F3PEdeEA57rafCXpA984d3V87YRcyKuCBn_CJaxgnKswQnZ48XaZQWJC3zuMgJzzDLEWcZp6wiVZSRJD8TFxjhJMJRHKEE4WRR0bgqiiJN0pKgJS5AgnhDhFyE13C0qc_CuxYXUVTkaXYmScmlDS-EYRxCEWOQXp6ZiwCq7GoLEiSFdXaU4IST4SWy8EB6-fqLEeHtDW7POiMvfv6lkMHWbxf4nwEAAP__nHH-Dw">