<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61717>61717</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]`convert-func-to-llvm` triggers Assertion Failure `llvm::all_of(types, [](Type t) { return t; }) && "attempting to construct a TypeRange with null types"'
</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/938deaad8ac92d9a45db8ef2d8a71fbf04958d90
steps to reproduce:
```
mlir-opt test.mlir -convert-func-to-llvm=use-bare-ptr-memref-call-conv=true
```
test case:
```
module {
func.func @main(%arg0: tensor<?xf32> , %arg1: tensor<?xf32>) -> (memref<?xf32>, memref<?xf32>) {
%3 = bufferization.to_memref %arg0 : memref<?xf32>
%5 = bufferization.to_memref %arg1 : memref<?xf32>
return %3, %5 : memref<?xf32>, memref<?xf32>
}
}
```
crash trace:
```
mlir-opt: /home/ty/llvm-project/mlir/lib/IR/TypeRange.cpp:20: mlir::TypeRange::TypeRange(llvm::ArrayRef<mlir::Type>): Assertion `llvm::all_of(types, [](Type t) { return t; }) && "attempting to construct a TypeRange with null types"' 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 -convert-func-to-llvm=use-bare-ptr-memref-call-conv=true
#0 0x0000560433df82fa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2282fa)
#1 0x0000560433df558c SignalHandler(int) Signals.cpp:0:0
#2 0x00007f3e2d1e6980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#3 0x00007f3e2be97e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#4 0x00007f3e2be997f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
#5 0x00007f3e2be893fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
#6 0x00007f3e2be89472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#7 0x00005604358a1f41 mlir::TypeRange::TypeRange(llvm::ArrayRef<mlir::Type>) (/home/ty/llvm-project/build/bin/mlir-opt+0x1cd1f41)
#8 0x0000560435885eb3 mlir::Operation::create(mlir::OperationState const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x1cb5eb3)
#9 0x00005604357efe0c mlir::OpBuilder::create(mlir::OperationState const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x1c1fe0c)
#10 0x000056043501f27e (anonymous namespace)::ReturnOpLowering::matchAndRewrite(mlir::func::ReturnOp, mlir::func::ReturnOpAdaptor, mlir::ConversionPatternRewriter&) const FuncToLLVM.cpp:0:0
#11 0x000056043501a77a mlir::ConvertOpToLLVMPattern<mlir::func::ReturnOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const (/home/ty/llvm-project/build/bin/mlir-opt+0x144a77a)
#12 0x00005604357633a8 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/home/ty/llvm-project/build/bin/mlir-opt+0x1b933a8)
#13 0x0000560435aa6ec9 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&)>) (/home/ty/llvm-project/build/bin/mlir-opt+0x1ed6ec9)
#14 0x000056043576dd77 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#15 0x000056043576e9d8 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) DialectConversion.cpp:0:0
#16 0x0000560435772490 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1ba2490)
#17 0x0000560435021acf (anonymous namespace)::ConvertFuncToLLVMPass::runOnOperation() (.part.540) FuncToLLVM.cpp:0:0
#18 0x00005604350226d5 (anonymous namespace)::ConvertFuncToLLVMPass::runOnOperation() FuncToLLVM.cpp:0:0
#19 0x00005604356f108e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b2108e)
#20 0x00005604356f1ee3 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
#21 0x00005604356f256d mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b2256d)
#22 0x00005604356e64e3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x00005604356e6bb1 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
#24 0x00005604356e6da1 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
#25 0x00005604357b36f0 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+0x1be36f0)
#26 0x00005604356e1ec3 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+0x1b11ec3)
#27 0x00005604356e46ee mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b146ee)
#28 0x0000560433dc42f0 main (/home/ty/llvm-project/build/bin/mlir-opt+0x1f42f0)
#29 0x00007f3e2be7ac87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#30 0x0000560433dd714a _start (/home/ty/llvm-project/build/bin/mlir-opt+0x20714a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWs1u4zgSfhrmQtiQqP9DDk7SxvYiQQdJMIe5GJRYkrlDU1qS6o7n6RekZFuSnbYzyczOLtAdm1Kx6vvqj5RoqjWvJMA1im5QdHdFW7Ou1fUNUPErNOutusprtr1-AW1wUW823KBggdfGNBoFC0SWiCwrbtZtPi_qDSJLIb7vPmaNqv8FhUFk2U8lyyxIGVDKUlpkhGU0jFieQklYShO_zEsvzKKUZR7y7pC36P5qA43GpsYKGlWztgBreiCAYq__54YbwdWsbgw2oM3cjvCsqOV3UGZWtrKYmXrmYAZ3rYZZThXMGqNmG9goKGcFFcLJo-DOqBZO2jDOIVSfg1KzVgBGyU03xtgCmNs_GIXehnKJSIpIRFXlWc8akLpWKLhFwfK1DAgKvmBEbnEn4r8hgkiGZ51o2rGY3L7FJy9nQ2TYGgkwCu5w3pYlKP47NbyWc1Ovutk9Cg9bGKcUDjVFF2jyz2tSYFolHbTeD9Gbk96g2etCyV0fo_2XcbAKRfUaG0WHCXY6tSwCRJbregOILM32OOOtpL3Kc0SWX58QWb5sG3iisoJ50TQoWBAXcCcXLFCw2N-fDknaZau9ulCKbp8cw_HMLp5W40JrUNbdGMXeYSYVYlWXiKRm24B2vnQlj0hq52PTp8PO4wYFN85n9jKJEYkxIoQaA5vGcFnZgixqqY1qC4Mp3uPFP7hZY9kKgXtTBJEEl5QLYPPOj4_3XxbPX7Bu8w23k_O2stVdK2PVvru9cK1ba2iJqWSYy0K0DLBZA-5imtPiNxfX3vyzocVvmLWbZh9ob4687FHVlaIbTFXVbkAafT7OecsFs5-2kpd_SuvBiAQe9l49z_Oi2AuDgJUpKSk-BFdvdfflUXFpHL0Xl8fD3FH0x6rWRgHduIDeYi67qNsW9H6SiNx4r4RYKDb19lj9CdYoSgv8zCtJxT-oZAIUImlvurus-5Lw3P-9ItIrSsoACPMhzlIPr1YKtKkVrJTpkXdF9prGqzicCS7b11kl2-5GY9YKKJvreu45wD7JUm-ENxiaySFLIE2wolwDHnCvBM-L2e0v__zxa74fkjlJEFlqxwKR5XxuR1vNoLHp2Er-2l347tDI1g6d6nmBgkXkjwmHEyRZUvqY5rVjehkSwzpvuFnOSDoxEo2NpFlQUrxaUdc2VrZMVzm9nHs3b_-lM5mNTcZTk2FCLohdYaMWu6gFXpiQUdSSYZZFKfXL0P_kbvqhwvALZiGNMKdjzGkEeTDA_K0B5RbKblgooMYCPiHxbKiBrv-6Wv4o1txCGWHNRlgTKMErRlhvrD5Qfz1W30LZY7UNZ9QdI88vSWLzN6WylttN3Wos6QZ04zpi1sF7csvct-a-_gGKy6q7uqGmWC8ke4Ifik8I2QY-nut2HD-5v2C0MbUai9269UDzWj7a1VTJ3pbqneMchZetLF7q-_tfHo57o6XsTyjTJKFHRsy3ptPRWxrl-Qk6wZfzXjgkKVlYYmeq6RcqWthtzt7pgw-lSRhal4zShIxTOg4Cmv4M1Pudcbjzp_HKMwt7xCsY8aI0hiI7hrJoGsELavPxk3kNk8BmlZ246rbheV0LPFLdKxj2gz493lTyvebsw0oOk-_rihdUPIFuhblM7wdbFjAbklHMwkkuMpYk51rWPir3UFHBf981X9EPLwzhueK741RAYQ5ipztQNGEAGUsvZtD3p_3ysWtX_W19fpke8Xt3At1xWslaG16Monwh9XhMPSFh5g0cTJtGbB-pMpyKg6p3R-eFqgpMX2EHgaWqf4ddzPoIPoMZ5OzQE3cgNTyDedt3x-IPtPkqy_qnU6xL3XrxxV34YIHk1LpwVCDj_Z1HfFqU59Krz6rD2vlIdf9gpFr5TQ5IpD3meUOVmUehNX520U0nmEjMos_GdA7DeF8Wl76XwiA7GBjKxS5mL_W3xtrbbUR2ZidNT-ujNHw7QReSiq3m-oFKWoHb3Ngubz9b6d4mss94sPRzYqkNc4J4U-4Awbu5P_IGBJfTbmlF95TiT3fGeA3V-qt7c7IB6faHR4vsUGDwSLDD_kgVSGOLdFf2uxqcu3Gj6mYe-S6prbKTqUT8iTtJFLMJih2vk4kzdsuHw23Nj8I93q_FEIcQ4AZUWavNojheJ45fcGjD-hcka6qArRqjUHB7mPFct6qAh0qh4MuogR5IPtx_fbqtpYFXcxSnB8HVt8Y8UG4XtJJXo6ecwd3T_g-m_PLcx42qC9D6xr04vZReK_m_Wzii9wCbWm13qgbyDEraCrNiIMDA23P6Bn8p56Fcv5Q-QcW1UdujhenFvZd5dMWyuMhd4dRdjA6f-Mfbuj-yD_zr3Pl2ULP9Q1hBhchp8duqHD-3Dfz0N0yP02G_sGQ6EUQSQTc5o4gkf6eokFTUsvprHfsTSOcLZrJDz4O4HG5TdSO4WUj2OOk4_w12_4NF-lOJwzag-_zo4gg2dqPFMZ50Qx-K4HSd_b91iQ-60reeGrkymbgyjAHedGW_myvWtNu3TR6gno3isrIPqxcQ_pzc8C3eEaF0fAJThMQWPuXyY5ZKq2dkKBu_2E9okSZ4tRI8L1baUGVWvdWLjhIK3e7OULqv7qbT444VgjAcNbjpqRhL_JDizvDHDrU8q-nAdHwUfMWuA5YFGb2Caz9OsjRMSRxcra_jJILII16SszD0C0ZSz4c49QOSZSEL6RW_Jh4JvIDEfhz4XjAPIuZDSaIgS7KMJiEKPdhQLuYW67xW1ZU72ryO_cRPrgTNQWj3Uw1CJPzA7iYiBEV3V-ra8cvbSqPQE1wbfdBiuBHuNx52N4uiOxR7J48lYw8bxasKlB6cIy8pF62Cv9V58lWrxPUfPyh2Dv1PAAAA__9b_7Qq">