| Issue |
76309
|
| Summary |
[mlir][affine] --affine-scalrep crashes in mlir::affine::affineScalarReplace with assertion failure "multiple simultaneous replacement stores"
|
| Labels |
mlir
|
| Assignees |
|
| Reporter |
anonymousMCS
|
git version: 31aa7d2de018693a6b45c9056a67229c54461b8f
system: ```Ubuntu 20.04.6 LTS (Focal Fossa)```
reproduced with: ```mlir-opt --affine-scalrep a.mlir```
a.mlir:
```
#map1 = affine_map<(d0) -> (d0)>
#map4 = affine_map<(d0) -> (d0 + ((-d0 + 3) floordiv 4) * 4)>
func.func @func1() {
%tmp = arith.constant 1.1 : f16
%alloc_66 = memref.alloc() : memref<f16, 1>
affine.for %arg2 = 4 to 6 {
affine.for %arg3 = #map1(%arg2) to #map4(%arg2) step 4 {
affine.store %tmp, %alloc_66[] : memref<f16, 1>
affine.store %tmp, %alloc_66[] : memref<f16, 1>
%270 = affine.load %alloc_66[] : memref<f16, 1>
}
}
return
}
```
trace:
```
mlir-opt: /data/bin/llvm-project/mlir/lib/Dialect/Affine/Utils/Utils.cpp:877: void forwardStoreToLoad(mlir::affine::AffineReadOpInterface, llvm::SmallVectorImpl<mlir::Operation*>&, llvm::SmallPtrSetImpl<mlir::Value>&, mlir::DominanceInfo&): Assertion `lastWriteStoreOp == nullptr && "multiple simultaneous replacement stores"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --affine-scalrep a.mlir
#0 0x000055899b160b2f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x167fb2f)
#1 0x000055899b15db84 SignalHandler(int) Signals.cpp:0:0
#2 0x00007fbd882d8420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007fbd87dc300b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007fbd87da2859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007fbd87da2729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007fbd87db3fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x000055899b2fce4d forwardStoreToLoad(mlir::affine::AffineReadOpInterface, llvm::SmallVectorImpl<mlir::Operation*>&, llvm::SmallPtrSetImpl<mlir::Value>&, mlir::DominanceInfo&) Utils.cpp:0:0
#8 0x000055899b2f128c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.3) Utils.cpp:0:0
#9 0x000055899b2f128c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.3) Utils.cpp:0:0
#10 0x000055899b2ff9f0 mlir::affine::affineScalarReplace(mlir::func::FuncOp, mlir::DominanceInfo&, mlir::PostDominanceInfo&) (/data/bin/llvm-project/build/bin/mlir-opt+0x181e9f0)
#11 0x000055899b287b6b (anonymous namespace)::AffineScalarReplacement::runOnOperation() AffineScalarReplacement.cpp:0:0
#12 0x000055899de4a72e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x436972e)
#13 0x000055899de4ac0a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x4369c0a)
#14 0x000055899de4b5ac mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#15 0x000055899de49d65 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x4368d65)
#16 0x000055899de4a4ca mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x43694ca)
#17 0x000055899de4ac0a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x4369c0a)
#18 0x000055899de4b3d4 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x436a3d4)
#19 0x000055899de3c2b3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000055899de3d784 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
#21 0x000055899de3d934 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
#22 0x000055899df397e4 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) (/data/bin/llvm-project/build/bin/mlir-opt+0x44587e4)
#23 0x000055899de36197 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4355197)
#24 0x000055899de3da81 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x435ca81)
#25 0x000055899de3dee6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x435cee6)
#26 0x000055899b0975e3 main (/data/bin/llvm-project/build/bin/mlir-opt+0x15b65e3)
#27 0x00007fbd87da4083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#28 0x000055899b13062e _start (/data/bin/llvm-project/build/bin/mlir-opt+0x164f62e)
Aborted (core dumped)
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs