Closed
Description
// real.mlir
!field_elem = i256
func.func @constraints(%i: tensor<15 x !field_elem>, %a: tensor<65535 x !field_elem>, %o: tensor<15 x !field_elem>) -> tensor<65535 x !polynomial.polynomial<ring=<coefficientType=!field_elem>>> {
%result = tensor.empty() : tensor<65535 x !polynomial.polynomial<ring=<coefficientType=!field_elem>>>
%deg = arith.constant 2 : index
%coeff = arith.constant 256 : i256
%mono = polynomial.monomial %coeff, %deg : (!field_elem, index) -> !polynomial.polynomial<ring=<coefficientType=!field_elem>>
%idx = arith.constant 0 : index
%insertion = tensor.insert %mono into %result[%idx] : tensor<65535 x !polynomial.polynomial<ring=<coefficientType=!field_elem>>>
%blah = arith.constant 3.14 : f32
return %insertion : tensor<65535 x !polynomial.polynomial<ring=<coefficientType=!field_elem>>>
}
is the offending file.
$ heir-opt --polynomial-to-mod-arith mlir/real.mlir
is the offending invocation.
The error is:
~/src/rust-lang main ?5 ❯ heir-opt --polynomial-to-mod-arith mlir/real.mlir 09:41:37 AM
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: heir-opt --polynomial-to-mod-arith mlir/real.mlir
#0 0x000060c3a5ae302b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/fizzixnerd/bin/heir-opt+0x378702b)
#1 0x000060c3a5ae0fe5 llvm::sys::RunSignalHandlers() (/home/fizzixnerd/bin/heir-opt+0x3784fe5)
#2 0x000060c3a5ae369a SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x000079f9d0e45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000060c3a3dccf10 mlir::heir::polynomial::IntPolynomialAttr::getPolynomial() const (/home/fizzixnerd/bin/heir-opt+0x1a70f10)
#5 0x000060c3a32a4235 mlir::heir::polynomial::convertPolynomialType(mlir::heir::polynomial::PolynomialType) (/home/fizzixnerd/bin/heir-opt+0xf48235)
#6 0x000060c3a32a774b std::_Function_handler<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&), std::enable_if<std::is_invocable_v<mlir::heir::polynomial::PolynomialToModArithTypeConverter::PolynomialToModArithTypeConverter(mlir::MLIRContext*)::'lambda'(mlir::heir::polynomial::PolynomialType), mlir::heir::polynomial::PolynomialType, llvm::SmallVectorImpl<mlir::Type>&>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::heir::polynomial::PolynomialType, std::enable_if<std::is_invocable_v<mlir::heir::polynomial::PolynomialToModArithTypeConverter::PolynomialToModArithTypeConverter(mlir::MLIRContext*)::'lambda'(mlir::heir::polynomial::PolynomialType), mlir::heir::polynomial::PolynomialType>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::heir::polynomial::PolynomialType, mlir::heir::polynomial::PolynomialToModArithTypeConverter::PolynomialToModArithTypeConverter(mlir::MLIRContext*)::'lambda'(mlir::heir::polynomial::PolynomialType)>(mlir::heir::polynomial::PolynomialToModArithTypeConverter::PolynomialToModArithTypeConverter(mlir::MLIRContext*)::'lambda'(mlir::heir::polynomial::PolynomialType)&&) const::'lambda'(mlir::heir::polynomial::PolynomialType, llvm::SmallVectorImpl<mlir::Type>&)>(mlir::heir::polynomial::PolynomialToModArithTypeConverter::PolynomialToModArithTypeConverter(mlir::MLIRContext*)::'lambda'(mlir::heir::polynomial::PolynomialType)&&) const::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>::_M_invoke(std::_Any_data const&, mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&) (/home/fizzixnerd/bin/heir-opt+0xf4b74b)
#7 0x000060c3a57776f2 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) const (/home/fizzixnerd/bin/heir-opt+0x341b6f2)
#8 0x000060c3a577e4bc mlir::TypeConverter::isLegal(mlir::Type) const (/home/fizzixnerd/bin/heir-opt+0x34224bc)
#9 0x000060c3a32ba907 std::_Function_handler<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&), std::enable_if<std::is_invocable_v<mlir::heir::addTensorOfTensorConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_2, mlir::TensorType, llvm::SmallVectorImpl<mlir::Type>&>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::TensorType, std::enable_if<std::is_invocable_v<mlir::heir::addTensorOfTensorConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_2, mlir::TensorType>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::TensorType, mlir::heir::addTensorOfTensorConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_2>(mlir::heir::addTensorOfTensorConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_2&&) const::'lambda'(mlir::TensorType, llvm::SmallVectorImpl<mlir::Type>&)>(mlir::heir::addTensorOfTensorConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_2&&) const::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>::_M_invoke(std::_Any_data const&, mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&) ConversionUtils.cpp:0:0
#10 0x000060c3a57776f2 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) const (/home/fizzixnerd/bin/heir-opt+0x341b6f2)
#11 0x000060c3a5788147 bool std::all_of<llvm::concat_iterator<mlir::Type const, mlir::Type const*, mlir::Type const*>, std::enable_if<!std::is_convertible<llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>, mlir::Type>::value && !std::is_convertible<llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>, mlir::Operation*>::value, bool>::type mlir::TypeConverter::isLegal<llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>>(llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>&&) const::'lambda'(mlir::Type)>(llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>, llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>, std::enable_if<!std::is_convertible<llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>, mlir::Type>::value && !std::is_convertible<llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>, mlir::Operation*>::value, bool>::type mlir::TypeConverter::isLegal<llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>>(llvm::detail::concat_range<mlir::Type const, llvm::ArrayRef<mlir::Type>, llvm::ArrayRef<mlir::Type>>&&) const::'lambda'(mlir::Type)) (/home/fizzixnerd/bin/heir-opt+0x342c147)
#12 0x000060c3a577e6c8 mlir::TypeConverter::isSignatureLegal(mlir::FunctionType) const (/home/fizzixnerd/bin/heir-opt+0x34226c8)
#13 0x000060c3a32bd09c std::_Function_handler<std::optional<bool> (mlir::Operation*), std::enable_if<!std::is_invocable_v<mlir::heir::addStructuralConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_0, mlir::Operation*>, void>::type mlir::ConversionTarget::addDynamicallyLegalOp<mlir::func::FuncOp, mlir::heir::addStructuralConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_0>(mlir::heir::addStructuralConversionPatterns(mlir::TypeConverter&, mlir::RewritePatternSet&, mlir::ConversionTarget&)::$_0&&)::'lambda'(mlir::Operation*)>::_M_invoke(std::_Any_data const&, mlir::Operation*&&) ConversionUtils.cpp:0:0
#14 0x000060c3a577f739 mlir::ConversionTarget::isLegal(mlir::Operation*) const (/home/fizzixnerd/bin/heir-opt+0x3423739)
#15 0x000060c3a578754a mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>)::$_0>(long, mlir::Operation*) DialectConversion.cpp:0:0
#16 0x000060c3a33552a6 mlir::WalkResult mlir::detail::walk<mlir::ForwardDominanceIterator<false>>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/home/fizzixnerd/bin/heir-opt+0xff92a6)
#17 0x000060c3a335519f mlir::WalkResult mlir::detail::walk<mlir::ForwardDominanceIterator<false>>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/home/fizzixnerd/bin/heir-opt+0xff919f)
#18 0x000060c3a577c5aa mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/home/fizzixnerd/bin/heir-opt+0x34205aa)
#19 0x000060c3a5780fce mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/home/fizzixnerd/bin/heir-opt+0x3424fce)
#20 0x000060c3a32a65b8 mlir::heir::polynomial::PolynomialToModArith::runOnOperation() (/home/fizzixnerd/bin/heir-opt+0xf4a5b8)
#21 0x000060c3a5977b44 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/fizzixnerd/bin/heir-opt+0x361bb44)
#22 0x000060c3a5978067 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/fizzixnerd/bin/heir-opt+0x361c067)
#23 0x000060c3a597a5b1 mlir::PassManager::run(mlir::Operation*) (/home/fizzixnerd/bin/heir-opt+0x361e5b1)
#24 0x000060c3a3ee34ea performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#25 0x000060c3a3ee3039 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&) MlirOptMain.cpp:0:0
#26 0x000060c3a5aa456c 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/fizzixnerd/bin/heir-opt+0x374856c)
#27 0x000060c3a3edc09a mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/fizzixnerd/bin/heir-opt+0x1b8009a)
#28 0x000060c3a3edc3a9 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/fizzixnerd/bin/heir-opt+0x1b803a9)
#29 0x000060c3a3edc6e2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/fizzixnerd/bin/heir-opt+0x1b806e2)
#30 0x000060c3a307ba18 main (/home/fizzixnerd/bin/heir-opt+0xd1fa18)
#31 0x000079f9d0e2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#32 0x000079f9d0e2a28b call_init ./csu/../csu/libc-start.c:128:20
#33 0x000079f9d0e2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#34 0x000060c3a30797b5 _start (/home/fizzixnerd/bin/heir-opt+0xd1d7b5)
zsh: segmentation fault (core dumped) heir-opt --polynomial-to-mod-arith mlir/real.mlir
Metadata
Metadata
Assignees
Labels
No labels