Issue |
137328
|
Summary |
[MLIR] crashed on `linalg-detensorize`: Assertion `argValues.size() == source->getNumArguments() && "incorrect # of argument replacement values"' failed
|
Labels |
mlir
|
Assignees |
|
Reporter |
sweead
|
test commit: [8c7a2ce](https://github.com/llvm/llvm-project/commit/8c7a2ce01a77c96028fe2c8566f65c45ad9408d3)
step to reproduce:
```
mlir-opt test.mlir -pass-pipeline="builtin.module(func.func(linalg-detensorize))"
```
minimal test case:
```
module {
memref.global "private" constant @__constant_4x4xf32 : memref<4x4xf32> = dense<8.899000e+01> {alignment = 64 : i64}
func.func @main() -> memref<4x4xf32> {
%c16 = arith.constant 16 : index
%c1 = arith.constant 1 : index
%c4 = arith.constant 4 : index
%c0 = arith.constant 0 : index
%0 = memref.get_global @__constant_4x4xf32 : memref<4x4xf32>
%alloc = memref.alloc() {alignment = 64 : i64} : memref<4x4xf32>
call @parallel_compute_fn_with_aligned_loops(%c0, %c16, %c4, %c4, %c0, %c0, %c4, %c4, %c1, %c1, %0, %alloc) : (index, index, index, index, index, index, index, index, index, index, memref<4x4xf32>, memref<4x4xf32>) -> ()
return %alloc : memref<4x4xf32>
}
func.func private @parallel_compute_fn_with_aligned_loops(%arg0: index, %arg1: index, %arg2: index, %arg3: index, %arg4: index, %arg5: index, %arg6: index, %arg7: index, %arg8: index, %arg9: index, %arg10: memref<4x4xf32>, %arg11: memref<4x4xf32>) {
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%c4 = arith.constant 4 : index
cf.br ^bb1(%c0 : index)
^bb1(%0: index): // 2 preds: ^bb0, ^bb5
%1 = arith.cmpi slt, %0, %c4 : index
cf.cond_br %1, ^bb2(%0 : index), ^bb6
^bb2(%2: index): // pred: ^bb1
%3 = arith.addi %2, %c1 : index
cf.br ^bb3(%c0 : index)
^bb3(%4: index): // 2 preds: ^bb2, ^bb4
%5 = arith.cmpi slt, %4, %c4 : index
cf.cond_br %5, ^bb4(%4 : index), ^bb5
^bb4(%6: index): // pred: ^bb3
%7 = arith.addi %6, %c1 : index
%8 = memref.load %arg10[%2, %6] : memref<4x4xf32>
%9 = llvm.intr.tanh(%8) : (f32) -> f32
memref.store %9, %arg11[%2, %6] : memref<4x4xf32>
cf.br ^bb3(%7 : index)
^bb5: // pred: ^bb3
cf.br ^bb1(%3 : index)
^bb6: // pred: ^bb1
spirv.Return
}
}
```
Crash backtrace:
```
mlir-opt: /home/workdir/llvm-project/mlir/lib/IR/PatternMatch.cpp:291: virtual void mlir::RewriterBase::inlineBlockBefore(Block *, Block *, Block::iterator, ValueRange): Assertion `argValues.size() == source->getNumArguments() && "incorrect # of argument replacement values"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0x000055df1b074f78 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/mlir-opt+0x1342f78)
#1 0x000055df1b072a9e llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/mlir-opt+0x1340a9e)
#2 0x000055df1b075981 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007fbec78dc520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007fbec79309fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007fbec78dc476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007fbec78c27f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007fbec78c271b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007fbec78d3e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x000055df1e47c21f mlir::RewriterBase::inlineBlockBefore(mlir::Block*, mlir::Block*, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>, mlir::ValueRange) (/home/workdir/llvm-project/build/bin/mlir-opt+0x474a21f)
#10 0x000055df1bf4193f (anonymous namespace)::LinalgDetensorize::runOnOperation() Detensorize.cpp:0:0
#11 0x000055df1e2cb373 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4599373)
#12 0x000055df1e2cbc12 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4599c12)
#13 0x000055df1e2d205e auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&) const Pass.cpp:0:0
#14 0x000055df1e2d2fce std::_Function_handler<void (), llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'()>::_M_invoke(std::_Any_data const&) Pass.cpp:0:0
#15 0x000055df1e2d2a08 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x45a0a08)
#16 0x000055df1e2d2967 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x45a0967)
#17 0x00007fbec7933ee8 (/lib/x86_64-linux-gnu/libc.so.6+0x99ee8)
#18 0x000055df1e2d2d3f std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>::_M_complete_async() (/home/workdir/llvm-project/build/bin/mlir-opt+0x45a0d3f)
#19 0x000055df1e2d2dcc std::_Function_handler<void (), std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()>::_M_invoke(std::_Any_data const&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x45a0dcc)
#20 0x000055df20bd7749 llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x6ea5749)
#21 0x000055df20bd8d97 void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*) ThreadPool.cpp:0:0
#22 0x00007fbec792eac3 (/lib/x86_64-linux-gnu/libc.so.6+0x94ac3)
#23 0x00007fbec79bfa04 __clone (/lib/x86_64-linux-gnu/libc.so.6+0x125a04)
Aborted (core dumped)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs