Issue |
95246
|
Summary |
[mlir] Crash when using --convert-scf-to-cf
|
Labels |
mlir
|
Assignees |
|
Reporter |
wangyongj1a
|
I have the following MLIR program:
test.mlir:
```
func.func nested @func1() {
%c0 = arith.constant 0 : index
%43 = scf.execute_region -> i32 {
scf.index_switch %c0
default {
}
%164 = arith.constant 0 : i32
scf.yield %164 : i32
}
return
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --convert-scf-to-cf test.mlir
```
And the crash backtrace is:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/tmp/v0612/llvm-project/build/bin/mlir-opt --convert-scf-to-cf test.mlir
#0 0x000055d9cba0d42f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x14bf42f)
#1 0x000055d9cba0a484 SignalHandler(int) Signals.cpp:0:0
#2 0x00007ff8f635e420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x000055d9cba47ced llvm::StringRef::find(llvm::StringRef, unsigned long) const (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x14f9ced)
#4 0x000055d9cbb573b2 llvm::StringRef llvm::getTypeName<mlir::TypedAttr>() (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x16093b2)
#5 0x000055d9cbc6f9f4 mlir::AttributeInterface<mlir::TypedAttr, mlir::detail::TypedAttrInterfaceTraits>::getInterfaceFor(mlir::Attribute) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x17219f4)
#6 0x000055d9cbc72218 mlir::arith::ConstantOp::fold(mlir::arith::ConstantOpGenericAdaptor<llvm::ArrayRef<mlir::Attribute>>) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x1724218)
#7 0x000055d9cbce8904 mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&>::CallImpl<mlir::Op<mlir::arith::ConstantOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::Type>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::ZeroOperands, mlir::OpTrait::OpInvariants, mlir::BytecodeOpInterface::Trait, mlir::OpTrait::ConstantLike, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::OpAsmOpInterface::Trait, mlir::InferIntRangeInterface::Trait, mlir::InferTypeOpInterface::Trait>::getFoldHookFn()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>(void*, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x179a904)
#8 0x000055d9cbcde996 mlir::RegisteredOperationName::Model<mlir::arith::ConstantOp>::foldHook(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x1790996)
#9 0x000055d9cebe7d04 mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x4699d04)
#10 0x000055d9d19febaa mlir::getConstantIntValue(mlir::OpFoldResult) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x74b0baa)
#11 0x000055d9cd2ee95e mlir::scf::IndexSwitchOp::fold(mlir::scf::IndexSwitchOpGenericAdaptor<llvm::ArrayRef<mlir::Attribute>>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x2da095e)
#12 0x000055d9cd2eec81 mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&>::CallImpl<mlir::Op<mlir::scf::IndexSwitchOp, mlir::OpTrait::AtLeastNRegions<1u>::Impl, mlir::OpTrait::VariadicResults, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::OneOperand, mlir::OpTrait::SingleBlock, mlir::OpTrait::SingleBlockImplicitTerminator<mlir::scf::YieldOp>::Impl, mlir::OpTrait::OpInvariants, mlir::BytecodeOpInterface::Trait, mlir::OpTrait::HasRecursiveMemoryEffects, mlir::RegionBranchOpInterface::Trait>::getFoldHookFn()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>(void*, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x2da0c81)
#13 0x000055d9cd2fe266 mlir::RegisteredOperationName::Model<mlir::scf::IndexSwitchOp>::foldHook(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x2db0266)
#14 0x000055d9cebe7d04 mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x4699d04)
#15 0x000055d9cebe8098 mlir::Operation::fold(llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x469a098)
#16 0x000055d9ceb14de7 mlir::OpBuilder::tryFold(mlir::Operation*, llvm::SmallVectorImpl<mlir::Value>&) (/data/tmp/v0612/llvm-project/build/bin/mlir-opt+0x45c6de7)
#17 0x000055d9cea738ee (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#18 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#19 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#20 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#21 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#22 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#23 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#24 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#25 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#26 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#27 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#28 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#29 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#30 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#31 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#32 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#33 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
... ...
#236 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#237 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#238 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#239 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#240 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#241 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#242 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#243 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#244 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#245 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#246 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#247 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#248 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#249 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#250 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#251 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#252 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#253 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#254 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#255 0x000055d9cea73bde (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
Segmentation fault (core dumped)
```
My git version is fc1c34bbcb7811ebdbb623c5a4473c4f186c434d.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs