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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`-test-elements-attr-interface` pass crashes in `SparseElementsAttr::getZeroAPInt()` with assertion failure `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Test commit: https://github.com/llvm/llvm-project/commit/e7281c6f614230860cd18a9d1f24612c5c38e9ca

Steps to reproduce:
```
mlir-opt test.mlir -test-elements-attr-interface
```
Test case:
```
"test.sparse_attr"() {foo.sparse_attr = sparse<[[0, 0, 5]], -2.0> : vector<1x1x10xf16>} : () -> ()
```
Crash trace:
```
mlir-opt: /home/ty/llvm-project/llvm/include/llvm/Support/Casting.h:567: decltype(auto) llvm::cast(const From&) [with To = mlir::IntegerType; 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: /home/ty/llvm-project/build/bin/mlir-opt test.mlir -test-elements-attr-interface
 #0 0x000055f0b4a5d60a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0x22b60a)
 #1 0x000055f0b4a5a89c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f7315be3980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007f7314894e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007f73148967f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007f73148863fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007f7314886472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055f0b649e6f6 mlir::SparseElementsAttr::getZeroAPInt() const (/home/ty/llvm-project/build/bin/mlir-opt+0x1c6c6f6)
 #8 0x000055f0b64a76bc mlir::FailureOr<llvm::mapped_iterator<llvm::detail::SafeIntIterator<long, false>, std::function<llvm::APInt (long)>, decltype(declval<std::function<llvm::APInt (long)>>()(declval<llvm::detail::SafeIntIterator<long, false>>().llvm::detail::SafeIntIterator<long, false>::operator*() const()))>> mlir::SparseElementsAttr::try_value_begin_impl<llvm::APInt>(mlir::detail::ElementsAttrTrait<mlir::SparseElementsAttr>::OverloadToken<llvm::APInt>) const (/home/ty/llvm-project/build/bin/mlir-opt+0x1c756bc)
 #9 0x000055f0b64adfb1 mlir::detail::ElementsAttrInterfaceTraits::Model<mlir::SparseElementsAttr>::getValuesImpl(mlir::detail::ElementsAttrInterfaceTraits::Concept const*, mlir::Attribute, mlir::TypeID) (/home/ty/llvm-project/build/bin/mlir-opt+0x1c7bfb1)
#10 0x000055f0b6483247 mlir::ElementsAttr::getValuesImpl(mlir::TypeID) const (/home/ty/llvm-project/build/bin/mlir-opt+0x1c51247)
#11 0x000055f0b5a86b7e _ZNK4mlir12ElementsAttr15try_value_beginIN4llvm5APIntEEENSt9enable_ifIXoosrSt7is_sameINS_9AttributeET_E5valuentsrSt10is_base_ofIS6_S7_E5valueESt8optionalINS_6detail20ElementsAttrIteratorIS7_EEEE4typeEv (/home/ty/llvm-project/build/bin/mlir-opt+0x1254b7e)
#12 0x000055f0b623abfc void (anonymous namespace)::TestElementsAttrInterface::testElementsAttrIteration<llvm::APInt>(mlir::Operation*, mlir::ElementsAttr, llvm::StringRef) (.isra.175.constprop.186) TestBuiltinAttributeInterfaces.cpp:0:0
#13 0x000055f0b623dde1 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<(anonymous namespace)::TestElementsAttrInterface::runOnOperation()::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestBuiltinAttributeInterfaces.cpp:0:0
#14 0x000055f0b623d4b5 (anonymous namespace)::TestElementsAttrInterface::runOnOperation() TestBuiltinAttributeInterfaces.cpp:0:0
#15 0x000055f0b637d9be mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b4b9be)
#16 0x000055f0b637e813 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#17 0x000055f0b637ee9d mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b4ce9d)
#18 0x000055f0b6372e13 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#19 0x000055f0b63734e1 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#20 0x000055f0b63736d1 mlir::LogicalResult llvm::function_ref<mlir::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
#21 0x000055f0b64455e0 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1c135e0)
#22 0x000055f0b636e7f3 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b3c7f3)
#23 0x000055f0b637101e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b3f01e)
#24 0x000055f0b4a29570 main (/home/ty/llvm-project/build/bin/mlir-opt+0x1f7570)
#25 0x00007f7314877c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#26 0x000055f0b4a3c3da _start (/home/ty/llvm-project/build/bin/mlir-opt+0x20a3da)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWVtv27AV_jXMCxFDInV9yIPj2Ji3pgnqoBj6IlDSkc1VFjWSSuN_P5CSbUmxGzfptm5AG0sieS7fuZJkSvF1BXCD_Fvk312xRm-EvLkFVn6DerOTV6nIdzdPoDTOxHbLNaJTvNG6VohOEVkgslhzvWnSSSa2iCzK8nn_c11L8Q_INCKLbilZQEgiNwuKwPUIdaLAyXI3YnHuFsQLXJL5GY0gzhhy7pAzbf-uNNQKa4El1FLkTQaGdTshcLp_9nVbcnktao01KD0xb_jaPF5DCVuotLpmWstrXmmQBcvgJJFWV6bOckGEWPqqZlJBYkgiQhCJEIkxCm8LIfpjGNE73L4jOrM43zqIzLD94yP_zvwjM3xNJg6ic2wQfoZMC4nozH1xX1znpXADROcovLOjHa9rO9s-nxR0JpnaYC3Z24i1VBcbsQVEFnr32oSdYXmVlU0Oxw-rpq6FNDNmTGlerScbRKd-EBqSOWSl3tWASMQaLYzQdhmdIjrNmNKIRJmolMYLadwnsBD6tz-43uAnYaEzIrYLlpWGNcgnQ5De2iWjGXbIvzOsp0qB1FxUGAUOVwzR2ZMwGJLoKystH8MuwIgQKwmdPe3acTPI5LoxLoNFgXmViW3NNE9LwK06rrV4iAvGS8gnLZiPn-bT1RyrJt1yjRlOm7XxWSG18d5fDhquVAMKkQVmVY474LHeAM6sYVOWfbfGnezjhGXfcd5s64O1nQly4kcp1pJtDyqpt42dNrzMzS-vEFm8L6wwItTBzovjOI7vF07qMT8PHNbzALVT7cOj5JW28j9ZbyXRcZJkPxKhtATWOsgM80q39oveowUit84LIWngsEPgGFndkawsijO84uuKlX9hVV6CRCTqWLef1SSrDdaO_X8gRDpCYRFS10-BxpGDk0SC0kJCInUneclTRBYvUZAE3nXJq-blel017UCtNxJYPlFi4liBXRJHzkBe2mfjRbEHUYgl4wpwT_d1ydPsevb1rz--pYdXMiEhIgtltUBkMZmYt53KoTb-1lT8pf3wbKWpGvNqSU8yE9zuUGFvJEkQFi5mqbCaXiaJzls07CrLJBox8YdMooAWDCcJs2GemDhMUna57u26w0PLMh6yDMYsvZBcYLvMWC2wVqOOF5KB1cK-lwVeDEER9BLYytaJeRdXU1Na7Pc16G8gxfRxaRzQZqg2b34kCNwsMKV4IF80lI-FQZr15FswXjYSHkxpOoboltU15AnXIFlbto5jOWjGy047VsCy0svePFGtTUgXrDTlcW6elc7b6UVTZSaDD-hZCIza7dK4W9SrNObxmZWIzn6d0j7_D8i8W5k9tcn7KZh5ou4mkGnf9ntJ44PsFziSlrvkmZUNJCmseZXwbV2-RqWV_EitL3Wf5pNkpiOc_Zxvp8bDM8hSsPxJfIcTlrA8f49bh36QZgO3jkdunRepi9_Wb7kvaVbRrljdixzKS5Veg_5q4FZLA_QlmJ7kORNVBrXeG35qnORIyizjaaNh-Nl0Q8u7j5ZKNwvTInWPTSahrjOEM6LEC3uMT-avMzAchfwdlvdd4oUDUQdl3WdRkIaAk2-f_-aZpS7py-r6o_BYfvYMd9866Hw-_7zSMVQsLSHhxfLvQii50iFXiWJbWH5eJfHBFPOnZO5bUpU2s1yHK1uhElEsV0GyCvfj85WORG3SEysNjaD1DOIMvKJLEkuzbj6feybZzZ8_BhfxvTSEAVxkYFlCWVpk-Fnw3HBilah2W9EoXLEtqNq2anFnR1D6pBt3eWc8bPU5mZLHyeeh3k8d-_3Az8is11mutOTV-gsUnfdPuJJs4ob-xHpZLUU9cSO73TCC3za81Lw6GO8g_IkWz6BERyjlObgtSkcR9jUnkVAgOttjeE6v-JAyMlaWprdPCgPOx2CXTfVQ9RhFh4WIhCXbpjlDph_6uVj7EtnHfjTtXTB6Yxi91P-gn51S-F2y-QPZaJjHKZypGA_1k3ioH5lS05zVtpJ3ogyANRNeufB5555WrNwpru5ZxdZg_TsVojS_TWVPbfLfsRNyUy-N02ESCEa6Q-TSX9b9kddQ8gpGzmWmHlQKfjsY_UWG1bJSWtptb9c_nZ_QpSM70Mn-yCRUelkVold524RyzCO-azZm2BA77UrhGE6I85EUe71OOs441D5o7gzifGDuaCQfAZfiGmQh5HZqc5h6Y0d-aLTVhknIk1oPNwEr0cgM7temL9ojObL9_afll5moNLy87m_uSy4fan3PeDUTVcHXPRox7o2exj8e6Uc9cHEtRQZK3TZFYXf2F6nXVPyfDbxS7x62Qu72pHrzcyhYU-okhxI0nF_T7RUu1bk_746zEjL9BdZcabnrxo98nuxBwqMNluklcBFnDFeQ93vlT2LNM1Z-AdWU-ny9O7cAkeg_B-d5o54rtycN8Ae6x2mzXxgyJzuAP8Yqx27jjxDp7YBxh7shz_fB6ZlC1SXX0yp_HGWc_4Z2_4NB-tMZxzag_f3oVtelPjj94kiGGyIaQFjQ03H2_5YlPthn0Cws6ABKOiosruPCWSi7bi7bsLZvm57d4L2t8G_xjZQWjjvok4k3vDIgsR86eMt49TFOReiHQyccHX6HYRaFOElKnmaJ0kzqpON60dl3ppr9oX_7aActHXsOTj1vmOCCoZ40oznDLeOP3cI4jObs9fXlVX5D85jG7Apu3CBySOCFnne1uclD6rhF7hDIocgJBGnEwgyKGDzquYRd8RviEOpQ6rrEJcSbODQgQeiCF4WkyJiHPAe2jJf2SHYi5PrKXrPdBG4UulclS6FU9jKckAp-YDuICEH-3ZW8sZqlzVohzym50upIRXNd2lt008ci_w4Fzs_vyAIH10yp9i4PFOb2ovLy839DwF6TssNFZ9Eezv_bLjyvGlnevP8a00L8rwAAAP__z6YH4w">