| Issue |
103703
|
| Summary |
[mlir] [transform] -transform-interpreter crashes in transform::impl::InterpreterPass with assertion failure "expected positive loop bounds and step"
|
| Labels |
mlir
|
| Assignees |
|
| Reporter |
Emilyaxe
|
git version: [b68df](https://github.com/llvm/llvm-project/commit/b68df879c6)
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -transform-interpreter a.mlir`
a.mlir:
```
func.func @loop_unroll_and_jam_op() {
%c0 = arith.constant 0 : index
scf.for %arg0 = %c0 to %c0 step %c0 {
%0 = arith.addi %arg0, %arg0 : index
}
return
}
module attributes {transform.with_named_sequence} {
transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {
%0 = transform.structured.match ops{["arith.addi"]} in %arg0 : (!transform.any_op) -> !transform.any_op
%1 = transform.get_parent_op %0 {op_name = "scf.for"} : (!transform.any_op) -> !transform.op<"scf.for">
transform.loop.unroll_and_jam %1 {factor = 3 : i64} : !transform.op<"scf.for">
transform.yield
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/SCF/Utils/Utils.cpp:311: std::optional<int64_t> getConstantTripCount(scf::ForOp): Assertion `lbCst >= 0 && ubCst >= 0 && stepCst > 0 && "expected positive loop bounds and step"' 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/szy/MLIR/llvm-debug/llvm-project/build/bin/mlir-opt a.mlir -transform-interpreter
#0 0x00005634daa017c9 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:11
#1 0x00005634daa01c7b PrintStackTraceSignalHandler(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x00005634da9ffeaf llvm::sys::RunSignalHandlers() /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Signals.cpp:105:5
#3 0x00005634daa0234e SignalHandler(int) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#4 0x00007fe26eeb1420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#5 0x00007fe26e4ee00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#6 0x00007fe26e4cd859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#7 0x00007fe26e4cd729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#8 0x00007fe26e4cd729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#9 0x00007fe26e4defd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#10 0x00005634dd87bc66 getConstantTripCount(mlir::scf::ForOp) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/SCF/Utils/Utils.cpp:312:33
#11 0x00005634dd87c48a mlir::loopUnrollJamByFactor(mlir::scf::ForOp, unsigned long) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/SCF/Utils/Utils.cpp:525:39
#12 0x00005634dd7be648 mlir::transform::LoopUnrollAndJamOp::applyToOne(mlir::transform::TransformRewriter&, mlir::Operation*, mlir::transform::ApplyToEachResultList&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/SCF/TransformOps/SCFTransformOps.cpp:380:14
#13 0x00005634dd7fa37d mlir::DiagnosedSilenceableFailure mlir::transform::detail::applyTransformToEach<mlir::transform::LoopUnrollAndJamOp, llvm::iterator_range<llvm::filter_iterator_impl<mlir::Operation* const*, mlir::transform::TransformState::getPayloadOps(mlir::Value) const::'lambda'(mlir::Operation*), std::bidirectional_iterator_tag>>&>(mlir::transform::LoopUnrollAndJamOp, mlir::transform::TransformRewriter&, llvm::iterator_range<llvm::filter_iterator_impl<mlir::Operation* const*, mlir::transform::TransformState::getPayloadOps(mlir::Value) const::'lambda'(mlir::Operation*), std::bidirectional_iterator_tag>>&, llvm::SmallVectorImpl<mlir::transform::ApplyToEachResultList>&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h:1509:13
#14 0x00005634dd7fa083 mlir::transform::TransformEachOpTrait<mlir::transform::LoopUnrollAndJamOp>::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h:1579:40
#15 0x00005634dd7f9c31 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::LoopUnrollAndJamOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc:477:56
#16 0x00005634e3cb76ee mlir::transform::TransformOpInterface::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc:61:14
#17 0x00005634e3cb6f4f mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:953:48
#18 0x00005634de7832fd applySequenceBlock(mlir::Block&, mlir::transform::FailurePropagationMode, mlir::transform::TransformState&, mlir::transform::TransformResults&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/IR/TransformOps.cpp:1788:15
#19 0x00005634de785c1c mlir::transform::NamedSequenceOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/IR/TransformOps.cpp:2155:10
#20 0x00005634de71c2a1 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::NamedSequenceOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.h.inc:477:56
#21 0x00005634e3cb76ee mlir::transform::TransformOpInterface::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/Dialect/Transform/Interfaces/TransformInterfaces.cpp.inc:61:14
#22 0x00005634e3cb6f4f mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:953:48
#23 0x00005634e3cbd605 mlir::transform::applyTransforms(mlir::Operation*, mlir::transform::TransformOpInterface, mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>> const&, mlir::transform::TransformOptions const&, bool) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp:2016:42
#24 0x00005634de800919 mlir::transform::applyTransformNamedSequence(mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>>, mlir::transform::TransformOpInterface, mlir::ModuleOp, mlir::transform::TransformOptions const&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/Transforms/TransformInterpreterUtils.cpp:234:10
#25 0x00005634de7f81c0 (anonymous namespace)::InterpreterPass::runOnOperation() /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Transform/Transforms/InterpreterPass.cpp:147:16
#26 0x00005634dfd46b94 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:0:17
#27 0x00005634dfd46b35 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1>(long) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:5
#28 0x00005634daa257f9 llvm::function_ref<void ()>::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:5
#29 0x00005634dfd498bb void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/MLIRContext.h:276:3
#30 0x00005634dfd42720 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:533:17
#31 0x00005634dfd42c37 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:593:16
#32 0x00005634dfd44558 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:904:10
#33 0x00005634dfd4448d mlir::PassManager::run(mlir::Operation*) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:884:60
#34 0x00005634dfd38e1d performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:413:17
#35 0x00005634dfd38a82 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:478:12
#36 0x00005634dfd3887c 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 /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:561:12
#37 0x00005634dfd38816 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&) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#38 0x00005634dfeb3e22 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 /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#39 0x00005634dfeb3435 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) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Support/ToolUtilities.cpp:27:12
#40 0x00005634dfd35703 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:564:10
#41 0x00005634dfd35aa5 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:605:14
#42 0x00005634dfd35c78 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:621:10
#43 0x00005634da98bc53 main /data/szy/MLIR/llvm-debug/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:317:33
#44 0x00007fe26e4cf083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#45 0x00005634da98b87e _start (/data/szy/MLIR/llvm-debug/llvm-project/build/bin/mlir-opt+0x24ad87e)
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs