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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Test-legalize-pattern Pass crashes with assertion Failure  "replacement op doesn't match results of original op"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </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/97a1c98f
Reproduced with: 
` mlir-opt temp.mlir --test-legalize-patterns`

temp.mlir:
``` milr 
func.func private @callee(%0 : f32) -> f32 { 
  func.return %0 : f32

func.func @caller( %arg: f32) { 
  %1 = func.call @callee(%arg) : (f32) -> f32 
  return
}

```
 
trace:
```console  
Assertion failed: (op->getNumResults() == newOp->getNumResults() && "replacement op doesn't match results of original op"), function replaceOpWithResultsOfAnotherOp, file PatternMatch.cpp, line 365.
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.mlir --test-legalize-patterns
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 0x000000010034517c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x00000001003441e4 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000100345814 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001aad414c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001aad29ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001aac64340 abort + 168
6  libsystem_c.dylib 0x00000001aac63754 err + 0
7  mlir-opt                 0x00000001020c8b18 mlir::RewriterBase::inlineRegionBefore(mlir::Region&, mlir::Region&, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Block, true, false, void>, false, false>) (.cold.1) + 0
8  mlir-opt 0x0000000101a8843c mlir::RewriterBase::inlineRegionBefore(mlir::Region&, mlir::Region&, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Block, true, false, void>, false, false>) + 0
9  mlir-opt 0x00000001005fc870 (anonymous namespace)::CallOpSignatureConversion::matchAndRewrite(mlir::func::CallOp, mlir::func::CallOpAdaptor, mlir::ConversionPatternRewriter&) const + 344
10 mlir-opt                 0x00000001014a7194 mlir::OpConversionPattern<mlir::func::CallOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const + 168
11 mlir-opt                 0x00000001019a8620 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 200
12 mlir-opt 0x0000000101c0b570 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&)>) + 1420
13 mlir-opt                 0x00000001019b2b98 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 1948
14 mlir-opt 0x00000001019ac310 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 936
15 mlir-opt 0x00000001019ae400 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 80
16 mlir-opt                 0x00000001018b0f60 (anonymous namespace)::TestLegalizePatternDriver::runOnOperation() + 10092
17 mlir-opt                 0x0000000101970d5c mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 428
18 mlir-opt 0x000000010197128c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
19 mlir-opt                 0x0000000101972c08 mlir::PassManager::run(mlir::Operation*) + 1148
20 mlir-opt 0x000000010196bfcc performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
21 mlir-opt                 0x000000010196bb9c 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&) + 704
22 mlir-opt                 0x00000001019d7050 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) + 656
23 mlir-opt 0x0000000101969fc4 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) + 216
24 mlir-opt                 0x000000010196a4b8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
25 mlir-opt 0x00000001001e7d78 main + 108
26 dyld 0x0000000105239088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWVlv47oV_jXKCxGDohZLD3lwNtwB4jpIglu0LwZFHcnsUKRKUpnr--sLarElLxNn7jwM2gZBrIg8-3cWmtQYXkqAGy-69aL7K9rYjdI3d0oIVSttG4OvMpVvb5ZPX15Q1nBhEbWIqariFm2srY0XLDzy6JHHkttNk82YqjzyKMT78HFda_UvYNYjjx2dRx7TOfVZmhQevvfw4gVqrfKGQY6-cbvxggXqFrwYo0pwfa1qiyxU9cz9h66vLRh7LaCkgv8J1zW1FrQ0Xox7uvbvjsCpOPDrflHFhe6FFI1kM_cH1Zq_UwvICzGjQgB4JPFIhJHTqAiIR1J07QUP7hl589ueAUItCw220RJNCDqp8_sjUYMI7ZHEkVBdjoSMeXsk8pEX3HdCHNGhfo7WETm3keRIz55Pp95Oo7Gjdm7p9_bu05TBseuYkkYJQP2uhTGgLVcSFZQLyHstVO0UKMH-ralewDTCmlZZp-a9s0bCt9X5PST2SIw8QjTUgjKoQFqkapQrMNIjc4sqatkG6Y4MqQIpzUsuqUCq9ohzgUfuWp-1yvV8VvXfud30wlbFQiq7Ab2q271cAHruoLR03GesbhcEl4CCOJp1Fj8_PSxeH5BpMpcDFGVN6dgrbZFVn88JbkwDxiOPiMoccclEkwOyG0BMU7NBGWVf21D04l8tZV9R3lT1LjZ45uH0WatS0wpRXTbOXU6JTyXPAfc2FVVjkdlWmRJI0gqMCy1I02hAW9WgDX0H1NrTbeJ_gkZcujWNnhdvvyGlkQHbmgPynWsl21C-U428GD89_b5cv_5jebt6-vLPh5e1I3HZaRWqFZetQ129SPemor1N-A_c_fgYB2Hkz1mri9sbLMzWdA_PmkvbmvXWApok-02aflsrYzXQqoXcHeLSdgC8RVHcifRHIg9_piqEPoSnVHhp5CsvJRW_UZkL0HuY3yLf76sEOW9Z4odowsAjyUjRIAw7FgFCgmdmayxU61pQWyhdzfKt4NmIJaV56IcsRGvDS6tpVU_MDSdM7EYDzU_xICkARv2G9Vfu6hK5RSRJOj7RmA87wYHFYRBiRDOXOa0r4p40_pg0mEchAq1bwr5uzS8LFMEsyfwEDZ0hWLzAN80t6FtqoHvDpUv6Fyi5krdQKO1wMyZwCz1kzrze44ALbuzaCaBWaS-4O1zKwVIuujdS5bBWtStaxgvu9sxvhWJfHWOrG2jrFRWmfXhXPPeCh8m77sG9dBhJZkyJfOYPiOkdlpyGnE-TJAzY_5KDdi5Jz2RhVLBkjp0rqVRyW6nGdBWxbmtK2qlwR4VY1W2q2kbDnZLvoI0zuV1ue9ZC5r07Jx5znWrMZOq4w9VFTmvnqsmmvbi-iw1hax2eIte57bRi-PiilPFDOvfTcCRrVR9JmwTjyJzg4WMfrGqHgBYhiylCFlrT7QsUExm_U9FAH9cf8cKu3vj-ZV5IaRIT_D1Zn7dxv_KRugT3GPXJ6bRlOIvm-Jjjoq4FZ11q_Vz1xiEaRq21bsOUKeUaQnLEoLOos64P3lkmLnH_MpM98ZMqOaOiG_8u49s36ZAMvg8uhEpGsjT5qF7svP3UT2O9NsNwdmFoPoJ8a0IaDmgPT8MnpSzwPyxxOy06oXZQmXX_7pbNZNA6mb8Tgz6NhHtOS6mM5ewoXGkwjG7ROVMhxONMoXUtts9UW07FqGp_1v1vVJdgj9reo1Z_whCUPkSvYEdgG1t-D9LAK9jzvjrevqT1F1mo75IMXdD5aTG4KhlwHV-G6yTDRfwhSN7A2AHSvb33mr8PWNGNXMmRevthGOO0H4f9-YWJNsd5NJ5VxrPCqn5Tq_qZGjM0zEH-QfIbcxTV8_FeSCq2hpsllbSEtgm7auc-G9l-n5KPzxEhGRIvOYPGuU-Sz5vwzGtwQ9gBSt3WnWbxT7dp2hKM-SKN1e2B040jRz1jvKGT3C30uj9TDdI66A7JsENmsCu56aVIIAwnB9IHe07GfeqO4Tw21EmCz4QrzgrGUA3aHa8W7LjaHR8rB18On8bm3db12u8PixuqIV_Xdjr_vqpGM1iW2gseJvVib8Xy6cvLnZIW_rBHxeHHWuEUQEODndrQn5FxP0iSS0eoOMvSMdanivyI5se-bCT_dwNHvlxCpfT2timKDuDHhDkUtBHuvCHAwnnivoqOPX0Y83Q38TIqREbZ13UxHZGXgutVbZeUyw_Q82tY-DOxNGnjAph1J0Nj9fZMvlz22Xcfj4Rr3ApKhJLlr-PBI4y0OTTf5RC5MIfyOY7G04upBbcLmT9rxcCYQftfJDP-KzL5uztO18Z4-EaNBOcaSVqw8aH6_xXhp1eE7uTsD5EIL-1SNMySs5HpByG2od3Ic9B0X63msnSnnYvt6mcPgofZ4_TBBfswz-cJqiiX_cA8EMQo34p8vDkiQYqTBBlL-y9Yo8EPB1c6V_lNkKdBSq_gxo_nYeBHOA6uNjc4IoCzIk1ZFAeQY0J8HNMinM8hK2KcX_EbgkmAfeL7UeDjYBbQCFKS54xByFI690IMFeVi5twzU7q8au87bmLsJ_GVoBkIM1w-6pv2KiFrSuOFWHBjzZ7Mcivaa8rWodE9ejt1i4EcvLqLEzDtDQaiuwuqR8pFowH9lXulq0aLmx-_42nN_k8AAAD__0L681Y">