Issue |
132158
|
Summary |
[MLIR] `-test-convert-to-spirv` triggers Assertion `succeeded(result) && "expected ConstantLike op to be foldable"' failed.
|
Labels |
mlir
|
Assignees |
|
Reporter |
Lambor24
|
Test on commit: [6003c30](https://github.com/llvm/llvm-project/commit/6003c3055a4630be31cc3d459cdbb88248a007b9).
steps to reproduce:
```
mlir-opt test.mlir -test-convert-to-spirv
```
test case:
```
module {
func.func @test(%arg0: memref<1xi32, strided<[?], offset: ?>>, %arg1: memref<1xi32, strided<[?], offset: ?>>) -> memref<1xi32> {
%c1 = arith.constant 1 : index
%c0 = arith.constant 0 : index
%c31_i32 = arith.constant 31 : i32
%c0_i32 = arith.constant 0 : i32
%alloc = memref.alloc() {alignment = 64 : i64} : memref<1xi32>
cf.br ^bb1(%c0 : index)
^bb1(%0: index): // 2 preds: ^bb0, ^bb2
%1 = arith.cmpi slt, %0, %c1 : index
cf.cond_br %1, ^bb2, ^bb3
^bb2: // pred: ^bb1
%2 = memref.load %arg1[%0] : memref<1xi32, strided<[?], offset: ?>>
%3 = arith.cmpi sgt, %2, %c31_i32 : i32
%4 = arith.select %3, %c31_i32, %c0_i32 : i32
memref.store %4, %alloc[%0] : memref<1xi32>
%5 = arith.addi %0, %c1 : index
cf.br ^bb1(%5 : index)
^bb3: // pred: ^bb1
%alloc_0 = memref.alloc() {alignment = 64 : i64} : memref<1xi32>
cf.br ^bb4(%c0 : index)
^bb4(%6: index): // 2 preds: ^bb3, ^bb5
%7 = arith.cmpi slt, %6, %c1 : index
cf.cond_br %7, ^bb5, ^bb6
^bb5: // pred: ^bb4
%8 = memref.load %arg0[%6] : memref<1xi32, strided<[?], offset: ?>>
%9 = memref.load %alloc[%6] : memref<1xi32>
%10 = arith.divsi %8, %9 : i32
memref.store %10, %alloc_0[%6] : memref<1xi32>
%11 = arith.addi %6, %c1 : index
cf.br ^bb4(%11 : index)
^bb6: // pred: ^bb4
return %alloc_0 : memref<1xi32>
}
}
```
crash trace:
```
mlir-opt: /home/projects/project/llvm-project/mlir/include/mlir/IR/Matchers.h:93: bool mlir::detail::constant_op_binder<mlir::Attribute>::match(Operation *) [AttrT = mlir::Attribute]: Assertion `succeeded(result) && "expected ConstantLike op to be foldable"' 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 ./test.mlir -test-convert-to-spirv
#0 0x00005c767a7b3ead llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:11
#1 0x00005c767a7b439b PrintStackTraceSignalHandler(void*) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
#2 0x00005c767a7b2406 llvm::sys::RunSignalHandlers() /home/projects/project/llvm-project/llvm/lib/Support/Signals.cpp:105:5
#3 0x00005c767a7b4b7d SignalHandler(int, siginfo_t*, void*) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:7
#4 0x00007679c5a91520 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007679c5ae59fc pthread_kill (/usr/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#6 0x00007679c5a91476 gsignal (/usr/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#7 0x00007679c5a777f3 abort (/usr/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#8 0x00007679c5a7771b (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#9 0x00007679c5a88e96 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x00005c767a948819 mlir::detail::constant_op_binder<mlir::Attribute>::match(mlir::Operation*) /home/projects/project/llvm-project/mlir/include/mlir/IR/Matchers.h:95:68
#11 0x00005c767a913e1f bool mlir::matchPattern<mlir::detail::constant_op_binder<mlir::Attribute>>(mlir::Value, mlir::detail::constant_op_binder<mlir::Attribute> const&) /home/projects/project/llvm-project/mlir/include/mlir/IR/Matchers.h:494:5
#12 0x00005c76801d9815 mlir::Operation::fold(llvm::SmallVectorImpl<mlir::OpFoldResult>&) /home/projects/project/llvm-project/mlir/lib/IR/Operation.cpp:664:54
#13 0x00005c767ff7337c (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:493:25
#14 0x00005c767ff72f91 (anonymous namespace)::RegionPatternRewriteDriver::simplify(bool*) &&::$_2::operator()() const /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:874:30
#15 0x00005c767ff72f65 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::RegionPatternRewriteDriver::simplify(bool*) &&::$_2>(long) /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:5
#16 0x00005c767a7da209 llvm::function_ref<void ()>::operator()() const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#17 0x00005c767ff72695 void mlir::MLIRContext::executeAction<(anonymous namespace)::GreedyPatternRewriteIteration, long&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, long&) /home/projects/project/llvm-project/mlir/include/mlir/IR/MLIRContext.h:289:3
#18 0x00005c767ff70b15 (anonymous namespace)::RegionPatternRewriteDriver::simplify(bool*) && /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:887:3
#19 0x00005c767ff707f7 mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:919:47
#20 0x00005c767a9dc550 mlir::applyPatternsGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/projects/project/llvm-project/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:174:15
#21 0x00005c768368347b mlir::spirv::unrollVectorsInSignatures(mlir::Operation*) /home/projects/project/llvm-project/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp:1357:10
#22 0x00005c7680bb1a33 (anonymous namespace)::TestConvertToSPIRVPass::runOnOperation() /home/projects/project/llvm-project/mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp:111:42
#23 0x00005c767fe593cb 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
#24 0x00005c767fe59365 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
#25 0x00005c767a7da209 llvm::function_ref<void ()>::operator()() const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#26 0x00005c767fe5cfc5 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
#27 0x00005c767fe54c3a 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
#28 0x00005c767fe551c4 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
#29 0x00005c767fe56c28 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:905:10
#30 0x00005c767fe56b52 mlir::PassManager::run(mlir::Operation*) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:885:60
#31 0x00005c767fe47baa 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
#32 0x00005c767fe4776c 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
#33 0x00005c767fe4751c 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
#34 0x00005c767fe474b6 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
#35 0x00005c767ffd76a2 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
#36 0x00005c767ffd6c8c 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
#37 0x00005c767fe43928 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
#38 0x00005c767fe43ce9 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:669:14
#39 0x00005c767fe43eb8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:685:10
#40 0x00005c767a724a0c main /home/projects/project/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:331:33
#41 0x00007679c5a78d90 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#42 0x00007679c5a78e40 __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#43 0x00005c767a724605 _start (/home/projects/project/llvm-project/build/bin/mlir-opt+0x29fe605)
Aborted (core dumped)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs