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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Sparse Compiler crashed with assertion failure "incorrect # of replacement values"
        </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  585cbe3f
Reproduced with:  
`mlir-opt -sparse-compiler=vl=8 temp.mlir`

temp.mlir:
``` milr 
module {
  func.func private @func1(%arg0: tensor<?xf16>) { 
    %c0 = arith.constant 0 : index
 %c2 = arith.constant 2 : index  
    %alloc_9 = memref.alloc(%c0, %c2, %c2) : memref<?x?x?xi16>  
    %53 = tensor.empty(%c2, %c2, %c2) : tensor<?x?x?x24xi16>
    %broadcasted = linalg.broadcast ins(%alloc_9 : memref<?x?x?xi16>) outs(%53 : tensor<?x?x?x24xi16>) dimensions = [3] 
 %62 = scf.index_switch %c2 -> index 
    default {
      %141 = memref.alloca_scope  -> (index) { 
        %alloc_33 = memref.alloc(%c2, %c2, %c2) : memref<?x?x24x?xi16>
        linalg.transpose ins(%broadcasted : tensor<?x?x?x24xi16>) outs(%alloc_33 : memref<?x?x24x?xi16>) permutation = [2, 0, 3, 1]  
        memref.alloca_scope.return %c2 : index
      } 
      scf.yield %c2 : index
    } 
    return
 }
}

```
 
trace:
```console
Assertion failed: (op->getNumResults() == newValues.size() && "incorrect # of replacement values"), function replaceOp, file PatternMatch.cpp, line 268.
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 -sparse-compiler=vl=8 temp.mlir
 #0 0x0000000102ae0f18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/workspace/build/bin/mlir-opt+0x1002f8f18)
 #1 0x0000000102adf1b4 llvm::sys::RunSignalHandlers() (/workspace/build/bin/mlir-opt+0x1002f71b4)
 #2 0x0000000102ae15c4 SignalHandler(int) (/workspace/build/bin/mlir-opt+0x1002f95c4)
 #3 0x00000001be7894c4 (/usr/lib/system/libsystem_platform.dylib+0x1803414c4)
 #4 0x00000001be771ee0 (/usr/lib/system/libsystem_pthread.dylib+0x180329ee0)
 #5 0x00000001be6ac340 (/usr/lib/system/libsystem_c.dylib+0x180264340)
 #6 0x00000001be6ab754 (/usr/lib/system/libsystem_c.dylib+0x180263754)
 #7 0x00000001070dd614 mlir::RewriterBase::replaceOp(mlir::Operation*, mlir::Operation*) (.cold.1) (/workspace/build/bin/mlir-opt+0x1048f5614)
 #8 0x000000010529b18c mlir::RewriterBase::replaceOp(mlir::Operation*, mlir::ValueRange) (/workspace/build/bin/mlir-opt+0x102ab318c)
 #9 0x000000010357e4d8 mlir::linalg::generalizeNamedOp(mlir::RewriterBase&, mlir::linalg::LinalgOp) (/workspace/build/bin/mlir-opt+0x100d964d8)
#10 0x000000010357ed54 mlir::linalg::LinalgGeneralizationPattern::matchAndRewrite(mlir::linalg::LinalgOp, mlir::PatternRewriter&) const (/workspace/build/bin/mlir-opt+0x100d96d54)
#11 0x00000001067630f0 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&)>)::$_2::operator()() const (/workspace/build/bin/mlir-opt+0x103f7b0f0)
#12 0x00000001067603ec 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&)>) (/workspace/build/bin/mlir-opt+0x103f783ec)
#13 0x000000010518f420 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() (/workspace/build/bin/mlir-opt+0x1029a7420)
#14 0x000000010518cc50 mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/workspace/build/bin/mlir-opt+0x1029a4c50)
#15 0x000000010357efc8 (anonymous namespace)::LinalgGeneralizationPass::runOnOperation() (/workspace/build/bin/mlir-opt+0x100d96fc8)
#16 0x00000001051302a8 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/workspace/build/bin/mlir-opt+0x1029482a8)
#17 0x0000000105130998 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/workspace/build/bin/mlir-opt+0x102948998)
#18 0x0000000105131a4c mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/workspace/build/bin/mlir-opt+0x102949a4c)
#19 0x0000000105130404 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/workspace/build/bin/mlir-opt+0x102948404)
#20 0x0000000105130998 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/workspace/build/bin/mlir-opt+0x102948998)
#21 0x000000010513282c mlir::PassManager::run(mlir::Operation*) (/workspace/build/bin/mlir-opt+0x10294a82c)
#22 0x000000010512ad14 performActions(llvm::raw_ostream&, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) (/workspace/build/bin/mlir-opt+0x102942d14)
#23 0x000000010512a368 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>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_1>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) (/workspace/build/bin/mlir-opt+0x102942368)
#24 0x00000001051a834c 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) (/workspace/build/bin/mlir-opt+0x1029c034c)
#25 0x0000000105124d1c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/workspace/build/bin/mlir-opt+0x10293cd1c)
#26 0x000000010512518c mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/workspace/build/bin/mlir-opt+0x10293d18c)
#27 0x00000001027eb510 main (/workspace/build/bin/mlir-opt+0x100003510)
#28 0x000000010df11088 
``` 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1v2zrS_jXKDVFDIiVZusiFE9fnLdCcBsnBu5cGTY5sbilSS1JJfX79QpQci3I-vd0PFKdoElkkZ555ZjgzlEytFVsFcBllV1G2vKCt22lzea2l1I02rrXxxUbz_eXN1y93aNMK6RB1iOm6Fg6hrMjYBkgVxcsoXtxBYzRvGXD0KNwuIguE-pEoj2spzCfdOPTJNtRY-MR03QgJJiLLBxmRZYEc1M2smxfl8bDO_z7eJ4snef1_VAtpBiW15q0EFM2v-s8IVa1is-4Xaox4oA5QlMbd5yTCRYQzarZxh9KBstpE5Doiqx9Vkkfkc4TLThI6iEIowhmLUUSWiBrhdjOmlXVUOdTdXCChOPwYZndT8XNT8XEqCkVTKTVbl35RDbWBauZv9UBZHOHrXuzoovTS-tkD-MOP8EZMdGTEi--tnUHduP0gHr8sPuDm8IPTQUMgf2M05YxaB9wrkkJRuZ093UZC2YH4J2tfxd9h0K0bFnn4bwLCJeKiBmWFVtbDiLIrEmVLdHRO3jvHsmrmfbG2j8Kx3eC3Tx1zvY-O5nGoaCvdOLoGq5M0OfEaXVumG0C9rAgXfXScxFTgfEJe8v4r7jlhD6djAgNNgz-coco22sLRH6Hn3sPx0S0j8G_CwSVqwNSto05odfCOt8pHOOl-JZ2zJiQ9Q-7MgGuNetps4RbsqZ0vAzmdw_cCJH95UbikV3EInPlyyD5PF2EyOszrk5ahDE4TVpcKtIT-7sJaMJ6JigoJvMMT4UI3Xdhswf3e1ndgWzlQ7bNDx5mCx_-nsgU7s-JPOIzhPMI5ijAWimljgDkUYYJ0hQw0kjKoQTn04BdGuIugju0uHXoIw6Rvjb8rJKBb6hwYdUMd281Y4wekUIBwXsx6C26_fl7cf0a23XT1gKJNu-0EaeOQ02jnXGM7DvAqwqutcLt2M2O6jvBKyofDn0-N0X8H5iK8EtZ6cCtEFUdCMdlyQG4HiBlqd2hD2XdP7KD-3lH2HfG2bp6YjmdRXN4avTW0RtRs285q62PzIxXokCtIjOIfcf8viTGFuEoK5NGTRUQWdm_7i1sjlPN4_vCex8VxkqGPa22dAVp7L10joVzvsyLCq0dtvtvGL1p1JZZ3f4WK8OoAOcJX8Y8kjnFVVEnn7SO-JMTHq2STPofvrlX3Yquo_D-quATzFFIfhjBPNmkAAU8oSjKWokCZz4BnWlxmLFRHRuo2MC_KlKWD3NaaLqjEJsIru7cO6v5jf71uJHWVNvWM7_2cTkURkzRJJyrSUMU8AYjfqcLtDFA-0YBLgDjQkAUacspI-k4NLJSN85Skoex8Inszz95J0IlsMs9CZuZjX89jzvMkRYfejCzu4NEIB-aKWhhi_5hWiuO8bw0YXwMivOj2w0sjPmBmTEs-S84In7SosjwJLSjGFmS43CQF-6kW-NR8R9UWzkCM6YYkBQsQl2PEJJtDyouRvr6s99dbUGCoFH_C77QGPsEc2NYnoufFfPXX3eqP71he5ik_5qguRcVTA3iWvqr5t4MZnuGhDvUT6q4aLRQfbAnse96EsZGDqAMRnoQS-f78HEP5aHd0hgbJOJ_nJK7iU-2LppGCUafN2ya9HGbPmXI9yvyHwr7uG7KN1hIFogcBvfU9E75He0XIgxb8XxZyXPxVbwWjsu9x3ie37IcjnK5xf6k9Q9r09Wyoamd5lFTzTVzFgUfxxKMxAfaXR3-qR89wU0GABW4iQVJPiirFvpxSpdW-1q1FitYwiB9i6DcDwPch6UsjHmAA3BjNwNq_afNdig7yOf0SLuk8xWFMpROwjGXjLEGbRh5g2YXiKy25xyrkfpLOtz6MJol8ZfSfcDBokHMPbkT8eHbPwjD7WqtKbLsJXXAdK_AHLU5ZFlqcTQtAxYq33PN8JbBDO2ta9U2NttJZvSwv84qFpSoPfUNiTMe1loOjQh428h_6W9NBWnDaPO1906pJ3Fv7RpczHlkoKvdW2Buq6LZLAgdfXKNW-Yd1_MzTAy7TAtPQ3PnU3LL8uLm3ooHuXDhJc93UJyvyn25_mDmt_aKsM_6019WCk9Q6ntBr7gcG7LfUgHJfVKUP--S82E-LsgwpLiYUJzRlH6Z4FOsLu1fsS93ICBc9M-fA7DZpALOcRkIap79Q4Kdx0Knh-K_A_zcHPk4mFOMCswmyg63Pxs8zJ8EPQqIFDoIc4xASpjxJUQOm0qZe-I7GvvHgxjreD63XyfCEZUcN8HXjTESuj0vvdWsY3GxNRD6_UHpvvn65u9bKwQ934rcbKcy3xt1QofqiPO6bzqAC8yTcAGRKBcnHGyBs5M7p_E6ZapX4RwsnTN1Arc3-qq2qPupPFw4P39ccJDh4eTH5fNKpTj3oe04_wqiUG8q-rysVGDJi_sOx8J-z8Ih3KagE5rpm0DqzP42y1yLpeJpKvOBCarX9b9v2ivfOiXySh3lp0n7TggQF2TZSuIXit337f7DsfySef4n99-qMY9k7u7thMQm7G5xNsl3KE_b8Hvn19_zH-SSMJyGfk2MSzsKHqCGfQ9fCdrTvTxZhANw7I9T2Dqq3bTwHOx8_Tu2wB2cePIdNlsSopkJ9-PwYxyRLgpMuDrp9XiVJXBRo-qWFC35JeElKegGXSV7GOI7LhFzsLgnlKdCE5zTlrOQFm-OKAWGYkwI2NL0QlzjGJJ7jNMFJlpAZq9J5mVc8m8ebJMFFlMZQUyFnHb8zbbYX_p3aZZ7G-fxC0g1I67_sgbGCR-QHI4yjbHlhLv3buE27tVEaS2GdPUpxwkn_LRHvoGyJ7v07NHQ9vEPrX9AN3_xANHix2Rp4_2vJi9bIy_NfHHo7_xkAAP__PzBw3w">