<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/131292>131292</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR] `-remove-dead-values` triggers Assertion `results.size() == 1 && "expected a single result type"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Lambor24
</td>
</tr>
</table>
<pre>
Test on commit: [6b7daf2](https://github.com/llvm/llvm-project/commit/6b7daf224933d60a7ef8acc399da8388b90bf318).
steps to reproduce:
```
mlir-opt test.mlir -remove-dead-values
```
test case:
```
module {
llvm.func private @printMemrefF32(%arg0: i64, %arg1: !llvm.ptr) attributes {llvm.emit_c_interface, sym_visibility = "private"} {
llvm.return
}
}
```
crash trace:
```
mlir-opt: /home/projects/project/llvm-project/mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp:235: LLVMFunctionType mlir::LLVM::LLVMFunctionType::clone(TypeRange, TypeRange) const: Assertion `results.size() == 1 && "expected a single result 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/projects/project/llvm-project/build/bin/mlir-opt /home/test.mlir -remove-dead-values
#0 0x00005d5a1609baad llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:11
#1 0x00005d5a1609bf9b PrintStackTraceSignalHandler(void*) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
#2 0x00005d5a1609a006 llvm::sys::RunSignalHandlers() /home/projects/project/llvm-project/llvm/lib/Support/Signals.cpp:105:5
#3 0x00005d5a1609c77d SignalHandler(int, siginfo_t*, void*) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:7
#4 0x00007c55ad97c520 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007c55ad9d09fc pthread_kill (/usr/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#6 0x00007c55ad97c476 gsignal (/usr/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#7 0x00007c55ad9627f3 abort (/usr/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#8 0x00007c55ad96271b (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#9 0x00007c55ad973e96 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x00005d5a1867f6fc mlir::LLVM::LLVMFunctionType::clone(mlir::TypeRange, mlir::TypeRange) const /home/projects/project/llvm-project/mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp:236:14
#11 0x00005d5a1843c182 mlir::detail::FunctionOpInterfaceTrait<mlir::LLVM::LLVMFuncOp>::cloneTypeWith(mlir::TypeRange, mlir::TypeRange) /home/projects/project/llvm-project/build/tools/mlir/include/mlir/Interfaces/FunctionInterfaces.h.inc:653:67
#12 0x00005d5a1843c056 mlir::detail::FunctionOpInterfaceInterfaceTraits::Model<mlir::LLVM::LLVMFuncOp>::cloneTypeWith(mlir::detail::FunctionOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::TypeRange, mlir::TypeRange) /home/projects/project/llvm-project/build/tools/mlir/include/mlir/Interfaces/FunctionInterfaces.h.inc:1149:56
#13 0x00005d5a20cf2514 mlir::FunctionOpInterface::cloneTypeWith(mlir::TypeRange, mlir::TypeRange) /home/projects/project/llvm-project/build/tools/mlir/include/mlir/Interfaces/FunctionInterfaces.cpp.inc:29:14
#14 0x00005d5a1b7abcc1 mlir::FunctionOpInterface::getTypeWithoutArgs(llvm::BitVector const&) /home/projects/project/llvm-project/build/tools/mlir/include/mlir/Interfaces/FunctionInterfaces.h.inc:309:22
#15 0x00005d5a1b7aba81 mlir::FunctionOpInterface::eraseArguments(llvm::BitVector const&) /home/projects/project/llvm-project/build/tools/mlir/include/mlir/Interfaces/FunctionInterfaces.h.inc:259:38
#16 0x00005d5a1b7a1dd5 (anonymous namespace)::cleanUpDeadVals((anonymous namespace)::RDVFinalCleanupList&) /home/projects/project/llvm-project/mlir/lib/Transforms/RemoveDeadValues.cpp:700:5
#17 0x00005d5a1b7a1ad3 (anonymous namespace)::RemoveDeadValues::runOnOperation() /home/projects/project/llvm-project/mlir/lib/Transforms/RemoveDeadValues.cpp:779:1
#18 0x00005d5a1b71ad6b mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1::operator()() const /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:0:17
#19 0x00005d5a1b71ad05 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1>(long) /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:5
#20 0x00005d5a160c1e09 llvm::function_ref<void ()>::operator()() const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#21 0x00005d5a1b71e965 void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/projects/project/llvm-project/mlir/include/mlir/IR/MLIRContext.h:289:3
#22 0x00005d5a1b7165da mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:532:17
#23 0x00005d5a1b716b64 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:592:16
#24 0x00005d5a1b7185c8 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:905:10
#25 0x00005d5a1b7184f2 mlir::PassManager::run(mlir::Operation*) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:885:60
#26 0x00005d5a1b70954a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:474:17
#27 0x00005d5a1b70910c processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:542:12
#28 0x00005d5a1b708ebc mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:625:12
#29 0x00005d5a1b708e56 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&) /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#30 0x00005d5a1b898bb2 llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
#31 0x00005d5a1b89819c 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) /home/projects/project/llvm-project/mlir/lib/Support/ToolUtilities.cpp:27:12
#32 0x00005d5a1b7052c8 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:628:10
#33 0x00005d5a1b705689 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:669:14
#34 0x00005d5a1b705858 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:685:10
#35 0x00005d5a1600ca1c main /home/projects/project/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:331:33
#36 0x00007c55ad963d90 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#37 0x00007c55ad963e40 __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#38 0x00005d5a1600c615 _start (/home/projects/project/llvm-project/build/bin/mlir-opt+0x29ee615)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWt1S4zoSfhpxoyIly_8XXHgCqaUKCophZi9Tsiw72uNIXklmYZ9-S7KCHQMzkOFwOLNTU0nQT6u_r1utbltEa94Ixk5A_AXEp0ekNxupTi7ItpQKR0elrB5Obpk2UApI5XbLDQgLCOIvSZlWpMYgPgU42xjTaRAWAK8AXjXcbPpyQeUW4FXb3u2-jjsl_8WoAXjlReGVF4OjPAyrBJGU1RmhNMzzimRhlpU5KuswyADOFxCgAqBCG9ZpaCRUrFOy6imzK7suCBLk_6Ni23J1LDsDDdNmYf-Cx4pt5R07rhipju9I2zNtJ04mAVTY4ZASPYrdkyqrvmUQpF_setDiWtS9oLBT_I4YBkGEOsWFuWRbxepViAHOAI6JapCljicRwEs4tASOTBw4KZ1RAOeQGKN42Rum7SKuh225WdM1F4apmlBmBeiH7fqOa17ylpsHCMJTCDD2SgCMQXr6qKRXUzHTK-FoSk8trOFzHz1VRG-gUYS-gN-zOmi-2sgtA3jlLavHn09tbmfaVl4CvDrlpB2aLy6-X57fALxyH_av24eO6QXtOhAWOIztSrZ51QtquBS2GzphYQHCwnaNv6aDhlbaSsEAzmzLDRGNY2_yRw6pFNrhKbRmys62fqSY7lujF5r_lzkT5pZky3MAAU4ATizh7L5j1LAKEqi5aFoGh3nQWAUwBjiFNeEtqxYAFdcXZ8XXM6j7cssNJLDsG-vFUhnrz2_eRVxr68F4BYmoIBe07SsGzYbBwYoloX84S9q1vxpC_4BVv-0Gu6IFdP-ulWwU2UKimn7LhNFvt2zZ87ay31x4O7t9Nwr52Q6EAIcIonuEEIqrmAQJyktCKue3gxn1gx5-XNvN5cDcOifF2ThIkf-spTaKka0z0RJyYZzl3oRnx7bz1K99Zw0E8Oqb4Pe2gTeCtHrBBQVhkaEIhEUQeBTBHEWdl3Cm8iDgH0RULVMAZ3eSVwAXf7KemQ0_OzXxTE2CUPIc2Te92NNW73bCe-i5U3DY6QGyOz32CoYzBWmaVnBOnDPuEmrecFHLtXEkLuGH8BkFGQiL1KsbeXVTGsekylMaYwQdV6tej1HvPkvWSXTcctHfHzeiHzroQstFAvAXdB_hGCOAcy823hdbobymsDMbxUi1_oO37SFr5Ele03GNZK56lCaw0Q7sYRCiNBnFp_viE5zWISSlDXkHCMdZWoej8OyJ8KA8UGxQjmLzGSUhy5NDxIY5yz0VNjTsRbgsSeukpgccZOOMvSPt2WZ_uH3MSZ3YXRx5sHuBMItCGmR4omPFDOHt8HsH9ao732U4t4rYTHP5I3auOhCeTaixyvyTm82bKTrssDNStnoky5--Y8MjFjtoB3FsXGx8IEni0H6mnjc85w3Fyet52yfQB_FLWbH2Pcg8ZPGlFJR1xidZQ4AeJV51TBEr5knP5zdcEES5PbESb7npkYURrXEcRBPNnyHs7-u8tOs8Czif7vpo6r1lSkpKg9dw0DCzY0D2plCN3svrvnDznVEj1c6Nkr_e_CGyyDH2yOM5cpK9CjlTRLPiMff-7KhxbFGHmUedzFAHVRXbk5IIKR62stdQkC3TnUvU852_MyK-daeMVN9JO2SUP5xwc_p9xQVpl3Zi313wA7nYO9ZuFRG6lmprp9y4osRr1D8eaSlCPiW1WNM5VlKFP8M6F-zLlF5ciUnoOyClfjuWNPf5v8WS7WMJSJWUL5wyV92tvOquidZFRToj1SOGvVhlB7whvBeCtA-a60siSGOT-SUspWztdy_cM6nK127DeICjdTD8lE6oVANvnr1fTnMG_d2XZ8zVS7tjOX9CGIpdoTGpmmq_bdaK1SBcul6v5OPZStrWVuXrWuwdyJ-W8DMbkaRoDi6mxkjjG4rTW1tM3V7sogxpz-6NInqxsWVVMu44PHskQAOG8rfx_W6-chiaJJ-gCWYuxPLEu9BopcuL85ulFIbdG3883DPaG1Y42XsuY-1_5nq5FL5_z-KDgyTehq9kDS8nBBdKkYcbN2wUe37zTdjc_Oz51Q6NZE9PJFtkTPhwhOLMHT-eUTxjNIkr8kmj2PuGpjjEk-CEwzkPZRK9mYdr3rGWzyrMYegjvOTdiZm70LnQRrlcyG7a4kcDhpWHDq_7NVFMmHNRy0m98d7c5457n_XjWcYbZDHNZirvSHhkmmht86zsICbfGU7uHrsFyMOJ53CiGv8Ezg-AvLOuWWZ1TXa6zpJPlMcRgR1TNhMaAqL-ydNhbSr_wHNDFKvWnVEgXI4zvspeUXbZKBCeTZLw5QsRe267y5arq85cEi6WUtS8-YVEfj_hm2Tz7mUMXk3W8mxFaTQNEumcrQBR2ClJmdZf-rp2T1RfRVYv-L979oSsS7aV6mEnajK-YjXpW7OuWMsMe3mOPbTPXs_gdJx_SHXDGq6NevD94zq37pHptZTtWH79soO-ygpx5MKFLxPxLPFGGSvp83g_oTWeZ_mV_j6mleiF3OzjIL1M7DtUEq9yiwTHU7fIn7hFPH0fcyEbTkl7M7xafDGXe2nCZ-H2p2XQ_4v7j1XVRyL5kdd_WG23c_n9971llmdliX8D1_6Notov1LyPVg7mVg7y6Xmnu5abQlTXszzkryDtb-hxPxwx7ftqFBeNLeVfav6lTGh8V24Pv2-Gt9zw8c1gOvWIWdGOYrxXMP3GR8AHJBXZpJYLwznTSZa_yLSvxumGDHV38VYH-hlNHwA_mb6LCqM5_Cx-2dHeAv8vx5lNS_Yw3n9KiigJKNwSLg5TxDxVYffTrx-Ggfv0688ukCRhlR909wXnVY4eb0s8uTgSsgjB9drOWWtDlFl7jAcsxKLJQtmcvySI4bCEl_7LV-F2y7IkiIeFi1Iqw9yTVyoVc_fyWOWV2r-ReVSdhFUe5uSInQRpFORhlkTR0eYkQHVdJSnLkrokQRqQoGYxy4Mgy6O4zrIjfoIRjlEYRCiNURQtsorUJCsJwyhIozQAEWJbwtuFux8qVXPkrhSeBGGAc3zUkpK12t0NxnhwDwzi0yN14lCXfaNBhFqujR4lGG5ad5_48uL8BsSnECTouVt_CYJG8aZhSv_JFy-PetWeHH650pNxd4L_FwAA___MYyu0">