Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mlir] --test-linalg-greedy-fusion crashes in TypeSupport.h:173 #122247

Open
Emilyaxe opened this issue Jan 9, 2025 · 1 comment
Open

[Mlir] --test-linalg-greedy-fusion crashes in TypeSupport.h:173 #122247

Emilyaxe opened this issue Jan 9, 2025 · 1 comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] mlir:linalg

Comments

@Emilyaxe
Copy link

Emilyaxe commented Jan 9, 2025

git version: 56600c1

system: Ubuntu 18.04.6 LTS

reproduce with: mlir-opt a.mlir --test-linalg-greedy-fusion

a.mlir:

#map = affine_map<(d0, d1) -> (d0, d1)>
module {
  func.func private @printMemrefI32(tensor<*xi32>)
  func.func private @printMemrefF32(tensor<*xf32>)
  func.func private @main() {
    %0 = llvm.mlir.constant(1 : i32) : i32
    %1 = llvm.mlir.constant(0 : i32) : i32
    %2 = llvm.mlir.constant(7673 : i32) : i32
    %6 = llvm.mlir.constant(-1 : i32) : i32
    %cst = arith.constant dense<0> : tensor<30x8xi32>
    %7 = llvm.mlir.constant(0 : i64) : i64
    %8 = builtin.unrealized_conversion_cast %7 : i64 to index
    %10 = tensor.empty() : tensor<30x8xi32>
    %11 = linalg.generic {indexing_maps = [#map], iterator_types = ["parallel", "parallel"]} outs(%10 : tensor<30x8xi32>) {
    ^bb0(%out: i32):
      %45 = llvm.xor %2, %6 : i32
      linalg.yield %45 : i32
    } -> tensor<30x8xi32>
    %13 = tensor.empty() : tensor<30x8xi1>
    cf.br ^bb1(%cst : tensor<30x8xi32>)
  ^bb1(%19: tensor<30x8xi32>):  // 2 preds: ^bb0, ^bb2
    %20 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor<30x8xi32>) outs(%13 : tensor<30x8xi1>) {
    ^bb0(%in: i32, %out: i1):
      %45 = llvm.icmp "sgt" %1, %in : i32
      linalg.yield %45 : i1
    } -> tensor<30x8xi1>
    %extracted = tensor.extract %20[%8, %8] : tensor<30x8xi1>
    cf.cond_br %extracted, ^bb2, ^bb3
  ^bb2:  // pred: ^bb1
    %26 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor<30x8xi32>) outs(%10 : tensor<30x8xi32>) {
    ^bb0(%in: i32, %out: i32):
      %45 = llvm.add %in, %0 : i32
      linalg.yield %45 : i32
    } -> tensor<30x8xi32>
    cf.br ^bb1(%26 : tensor<30x8xi32>)
  ^bb3:  // pred: ^bb1
    %extracted_slice_0 = tensor.extract_slice %11[7, 4] [5, 4] [1, 1] : tensor<30x8xi32> to tensor<5x4xi32>
    %32 = tensor.empty() : tensor<5x4xi32>
    %33 = tensor.empty() : tensor<1x5x4xi32>
    %34 = tensor.empty() : tensor<5x4xi1>
    %35 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice_0 : tensor<5x4xi32>) outs(%34 : tensor<5x4xi1>) {
    ^bb0(%in: i32, %out: i1):
      %45 = llvm.icmp "eq" %in, %1 : i32
      linalg.yield %45 : i1
    } -> tensor<5x4xi1>
    %36 = linalg.generic {indexing_maps = [#map, #map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice_0, %35 : tensor<5x4xi32>, tensor<5x4xi1>) outs(%32 : tensor<5x4xi32>) {
    ^bb0(%in: i32, %in_6: i1, %out: i32):
      %45 = llvm.select %in_6, %0, %in : i1, i32
      linalg.yield %45 : i32
    } -> tensor<5x4xi32>
    %37 = linalg.generic {indexing_maps = [#map, #map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice_0, %36 : tensor<5x4xi32>, tensor<5x4xi32>) outs(%32 : tensor<5x4xi32>) {
    ^bb0(%in: i32, %in_6: i32, %out: i32):
      %45 = llvm.sdiv %in, %in_6 : i32
      linalg.yield %45 : i32
    } -> tensor<5x4xi32>
    %inserted_slice_1 = tensor.insert_slice %37 into %33[0, 0, 0] [1, 5, 4] [1, 1, 1] : tensor<5x4xi32> into tensor<1x5x4xi32>
    %38 = tensor.empty() : tensor<30x8xf32>
    %39 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor<30x8xi32>) outs(%38 : tensor<30x8xf32>) {
    ^bb0(%in: i32, %out: f32):
      %45 = llvm.sitofp %in : i32 to f32
      linalg.yield %45 : f32
    } -> tensor<30x8xf32>
    %40 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%39 : tensor<30x8xf32>) outs(%38 : tensor<30x8xf32>) {
    ^bb0(%in: f32, %out: f32):
      %45 = llvm.intr.floor(%in) : (f32) -> f32
      linalg.yield %45 : f32
    } -> tensor<30x8xf32>
    %cast = tensor.cast %40 : tensor<30x8xf32> to tensor<*xf32>
    call @printMemrefF32(%cast) : (tensor<*xf32>) -> ()
    %cast_3 = tensor.cast %inserted_slice_1 : tensor<1x5x4xi32> to tensor<*xi32>
    call @printMemrefI32(%cast_3) : (tensor<*xi32>) -> ()
    return
  }
}

stack trace:

PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #0 0x000055730697b799 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:11
 #1 0x000055730697bc4b PrintStackTraceSignalHandler(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
 #2 0x0000557306979e7f llvm::sys::RunSignalHandlers() /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Signals.cpp:105:5
 #3 0x000055730697c31e SignalHandler(int) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007ff6b48c0420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #5 0x0000557306ad7646 mlir::TypeStorage::getAbstractType() /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/TypeSupport.h:173:5
 #6 0x0000557306ad75f8 mlir::Type::getTypeID() /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Types.h:117:37
 #7 0x0000557306aebab5 bool mlir::detail::StorageUserBase<mlir::IntegerType, mlir::Type, mlir::detail::IntegerTypeStorage, mlir::detail::TypeUniquer>::classof<mlir::Type>(mlir::Type) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:113:16
 #8 0x0000557306aeba8d llvm::CastInfo<mlir::IntegerType, mlir::Type const, void>::isPossible(mlir::Type) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Types.h:423:7
 #9 0x0000557306e0ab7d llvm::DefaultDoCastIfPossible<mlir::IntegerType, mlir::Type const, llvm::CastInfo<mlir::IntegerType, mlir::Type const, void>>::doCastIfPossible(mlir::Type) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/Casting.h:311:9
#10 0x0000557306df7f08 decltype(auto) llvm::dyn_cast<mlir::IntegerType, mlir::Type>(mlir::Type const&) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/Casting.h:651:10
#11 0x000055730c5f9e68 mlir::Type::isSignlessInteger(unsigned int) const /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/IR/Types.cpp:82:20
#12 0x000055730c45d00e mlir::IntegerAttr::get(mlir::Type, llvm::APInt const&) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/IR/BuiltinAttributes.cpp.inc:369:12
#13 0x000055730c45141a mlir::Builder::getIndexAttr(long) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/IR/Builders.cpp:149:10
#14 0x0000557306d2d5d6 mlir::arith::ConstantIndexOp::build(mlir::OpBuilder&, mlir::OperationState&, long) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Arith/IR/ArithOps.cpp:293:36
#15 0x0000557306c170ee mlir::arith::ConstantIndexOp mlir::OpBuilder::create<mlir::arith::ConstantIndexOp, long>(mlir::Location, long&&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Builders.h:518:5
#16 0x00005573091f598e mlir::getOrCreateRanges(mlir::OffsetSizeAndStrideOpInterface, mlir::OpBuilder&, mlir::Location) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp:3048:17
#17 0x000055730f501e5c mlir::tensor::ExtractSliceOp::getOrCreateRanges(mlir::OpBuilder&, mlir::Location) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/Dialect/Tensor/IR/TensorOps.h.inc:1957:12
#18 0x000055730f500235 getRangeFromOperandShape(mlir::OpBuilder&, mlir::Location, mlir::Value, unsigned int) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:176:46
#19 0x000055730f500095 fuse(mlir::OpBuilder&, mlir::linalg::LinalgOp, mlir::AffineMap, mlir::OpOperand&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:190:5
#20 0x000055730f4ffd60 mlir::linalg::fuseProducerOfTensor(mlir::OpBuilder&, mlir::OpResult, mlir::OpOperand&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:271:7
#21 0x000055730f4ff92f mlir::linalg::fuseProducerOfTensor(mlir::OpBuilder&, mlir::OpOperand&) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:0:10
#22 0x000055730b813e99 fuseLinalgOpsGreedily(mlir::func::FuncOp) /data/szy/MLIR/llvm-debug/llvm-project/mlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp:47:20
#23 0x000055730b8139a6 (anonymous namespace)::TestLinalgGreedyFusion::runOnOperation() /data/szy/MLIR/llvm-debug/llvm-project/mlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp:90:24
#24 0x000055730c2733f4 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
#25 0x000055730c273395 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:46:5
#26 0x000055730699f859 llvm::function_ref<void ()>::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#27 0x000055730c27613b 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:281:3
#28 0x000055730c26ef97 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:532:17
#29 0x000055730c26f4b7 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:592:16
#30 0x000055730c2746e8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:813:36
#31 0x000055730c274540 auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&) const /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Threading.h:120:56
#32 0x000055730c274f71 llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'()::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Threading.h:62:18
#33 0x000055730c274dad std::_Function_handler<void (), llvm::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'()>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:302:7
#34 0x000055730c283e5e std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:7
#35 0x000055730c283e25 void std::__invoke_impl<void, std::function<void ()>>(std::__invoke_other, std::function<void ()>&&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:7
#36 0x000055730c283de5 std::__invoke_result<std::function<void ()>>::type std::__invoke<std::function<void ()>>(std::function<void ()>&&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:7
#37 0x000055730c283dbd void std::thread::_Invoker<std::tuple<std::function<void ()>>>::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:244:6
#38 0x000055730c283d45 std::thread::_Invoker<std::tuple<std::function<void ()>>>::operator()() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:251:4
#39 0x000055730c283c4c std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:1362:6
#40 0x000055730c283b10 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
#41 0x000055730c2839b1 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
#42 0x000055730c2837e9 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:561:27
#43 0x000055730c283968 void std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:73:7
#44 0x000055730c2838dd std::__invoke_result<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:7
#45 0x000055730c2838a4 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda'()::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:673:7
#46 0x000055730c283874 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda0'()::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:676:70
#47 0x000055730c283841 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::'lambda0'()::__invoke() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:676:21
#48 0x00007ff6b48bd4df __pthread_once_slow /build/glibc-LcI20x/glibc-2.31/nptl/pthread_once.c:118:7
#49 0x000055730c274bd7 __gthread_once(int*, void (*)()) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/gthr-default.h:700:5
#50 0x000055730c2837a7 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:683:11
#51 0x000055730c283575 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:403:6
#52 0x000055730c28555f std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>::_M_complete_async() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:1610:9
#53 0x000055730c285cea std::__future_base::_State_baseV2::wait() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:334:2
#54 0x000055730c285cca std::__basic_future<void>::wait() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:693:7
#55 0x000055730c285c75 std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/ThreadPool.h:114:46
#56 0x000055730c285abd std::_Function_handler<void (), std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:302:7
#57 0x000055730c283e5e std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:7
#58 0x000055731078d211 llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/ThreadPool.cpp:103:5
#59 0x000055731078e475 llvm::StdThreadPool::grow(int)::$_0::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/ThreadPool.cpp:49:5
#60 0x000055731078e3f9 auto void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)::'lambda'(auto&&, auto&&...)::operator()<llvm::StdThreadPool::grow(int)::$_0&>(auto&&, auto&&...) const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/thread.h:44:9
#61 0x000055731078e3cd auto std::__invoke_impl<void, void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)::'lambda'(auto&&, auto&&...), llvm::StdThreadPool::grow(int)::$_0&>(std::__invoke_other, void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)::'lambda'(auto&&, auto&&...)&&, llvm::StdThreadPool::grow(int)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:7
#62 0x000055731078e37d std::__invoke_result<auto, auto...>::type std::__invoke<void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)::'lambda'(auto&&, auto&&...), llvm::StdThreadPool::grow(int)::$_0&>(auto&&, auto&&...) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:7
#63 0x000055731078e34d decltype(auto) std::__apply_impl<void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)::'lambda'(auto&&, auto&&...), std::tuple<llvm::StdThreadPool::grow(int)::$_0>&, 0ul>(auto&&, std::tuple<llvm::StdThreadPool::grow(int)::$_0>&, std::integer_sequence<unsigned long, 0ul>) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/tuple:1684:7
#64 0x000055731078e2ad decltype(auto) std::apply<void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)::'lambda'(auto&&, auto&&...), std::tuple<llvm::StdThreadPool::grow(int)::$_0>&>(auto&&, std::tuple<llvm::StdThreadPool::grow(int)::$_0>&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/tuple:1694:7
#65 0x000055731078e27e void llvm::thread::GenericThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/thread.h:46:3
#66 0x000055731078dfc5 void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/thread.h:56:5
#67 0x00007ff6b48b4609 start_thread /build/glibc-LcI20x/glibc-2.31/nptl/pthread_create.c:478:7
#68 0x00007ff6b3fd9353 __clone /build/glibc-LcI20x/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0


@Emilyaxe Emilyaxe added crash Prefer [crash-on-valid] or [crash-on-invalid] mlir:linalg labels Jan 9, 2025
@llvmbot
Copy link
Member

llvmbot commented Jan 9, 2025

@llvm/issue-subscribers-mlir-linalg

Author: None (Emilyaxe)

git version: 56600c1

system: Ubuntu 18.04.6 LTS

reproduce with: mlir-opt a.mlir --test-linalg-greedy-fusion

a.mlir:

#map = affine_map&lt;(d0, d1) -&gt; (d0, d1)&gt;
module {
  func.func private @<!-- -->printMemrefI32(tensor&lt;*xi32&gt;)
  func.func private @<!-- -->printMemrefF32(tensor&lt;*xf32&gt;)
  func.func private @<!-- -->main() {
    %0 = llvm.mlir.constant(1 : i32) : i32
    %1 = llvm.mlir.constant(0 : i32) : i32
    %2 = llvm.mlir.constant(7673 : i32) : i32
    %6 = llvm.mlir.constant(-1 : i32) : i32
    %cst = arith.constant dense&lt;0&gt; : tensor&lt;30x8xi32&gt;
    %7 = llvm.mlir.constant(0 : i64) : i64
    %8 = builtin.unrealized_conversion_cast %7 : i64 to index
    %10 = tensor.empty() : tensor&lt;30x8xi32&gt;
    %11 = linalg.generic {indexing_maps = [#map], iterator_types = ["parallel", "parallel"]} outs(%10 : tensor&lt;30x8xi32&gt;) {
    ^bb0(%out: i32):
      %45 = llvm.xor %2, %6 : i32
      linalg.yield %45 : i32
    } -&gt; tensor&lt;30x8xi32&gt;
    %13 = tensor.empty() : tensor&lt;30x8xi1&gt;
    cf.br ^bb1(%cst : tensor&lt;30x8xi32&gt;)
  ^bb1(%19: tensor&lt;30x8xi32&gt;):  // 2 preds: ^bb0, ^bb2
    %20 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor&lt;30x8xi32&gt;) outs(%13 : tensor&lt;30x8xi1&gt;) {
    ^bb0(%in: i32, %out: i1):
      %45 = llvm.icmp "sgt" %1, %in : i32
      linalg.yield %45 : i1
    } -&gt; tensor&lt;30x8xi1&gt;
    %extracted = tensor.extract %20[%8, %8] : tensor&lt;30x8xi1&gt;
    cf.cond_br %extracted, ^bb2, ^bb3
  ^bb2:  // pred: ^bb1
    %26 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor&lt;30x8xi32&gt;) outs(%10 : tensor&lt;30x8xi32&gt;) {
    ^bb0(%in: i32, %out: i32):
      %45 = llvm.add %in, %0 : i32
      linalg.yield %45 : i32
    } -&gt; tensor&lt;30x8xi32&gt;
    cf.br ^bb1(%26 : tensor&lt;30x8xi32&gt;)
  ^bb3:  // pred: ^bb1
    %extracted_slice_0 = tensor.extract_slice %11[7, 4] [5, 4] [1, 1] : tensor&lt;30x8xi32&gt; to tensor&lt;5x4xi32&gt;
    %32 = tensor.empty() : tensor&lt;5x4xi32&gt;
    %33 = tensor.empty() : tensor&lt;1x5x4xi32&gt;
    %34 = tensor.empty() : tensor&lt;5x4xi1&gt;
    %35 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice_0 : tensor&lt;5x4xi32&gt;) outs(%34 : tensor&lt;5x4xi1&gt;) {
    ^bb0(%in: i32, %out: i1):
      %45 = llvm.icmp "eq" %in, %1 : i32
      linalg.yield %45 : i1
    } -&gt; tensor&lt;5x4xi1&gt;
    %36 = linalg.generic {indexing_maps = [#map, #map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice_0, %35 : tensor&lt;5x4xi32&gt;, tensor&lt;5x4xi1&gt;) outs(%32 : tensor&lt;5x4xi32&gt;) {
    ^bb0(%in: i32, %in_6: i1, %out: i32):
      %45 = llvm.select %in_6, %0, %in : i1, i32
      linalg.yield %45 : i32
    } -&gt; tensor&lt;5x4xi32&gt;
    %37 = linalg.generic {indexing_maps = [#map, #map, #map], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice_0, %36 : tensor&lt;5x4xi32&gt;, tensor&lt;5x4xi32&gt;) outs(%32 : tensor&lt;5x4xi32&gt;) {
    ^bb0(%in: i32, %in_6: i32, %out: i32):
      %45 = llvm.sdiv %in, %in_6 : i32
      linalg.yield %45 : i32
    } -&gt; tensor&lt;5x4xi32&gt;
    %inserted_slice_1 = tensor.insert_slice %37 into %33[0, 0, 0] [1, 5, 4] [1, 1, 1] : tensor&lt;5x4xi32&gt; into tensor&lt;1x5x4xi32&gt;
    %38 = tensor.empty() : tensor&lt;30x8xf32&gt;
    %39 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%19 : tensor&lt;30x8xi32&gt;) outs(%38 : tensor&lt;30x8xf32&gt;) {
    ^bb0(%in: i32, %out: f32):
      %45 = llvm.sitofp %in : i32 to f32
      linalg.yield %45 : f32
    } -&gt; tensor&lt;30x8xf32&gt;
    %40 = linalg.generic {indexing_maps = [#map, #map], iterator_types = ["parallel", "parallel"]} ins(%39 : tensor&lt;30x8xf32&gt;) outs(%38 : tensor&lt;30x8xf32&gt;) {
    ^bb0(%in: f32, %out: f32):
      %45 = llvm.intr.floor(%in) : (f32) -&gt; f32
      linalg.yield %45 : f32
    } -&gt; tensor&lt;30x8xf32&gt;
    %cast = tensor.cast %40 : tensor&lt;30x8xf32&gt; to tensor&lt;*xf32&gt;
    call @<!-- -->printMemrefF32(%cast) : (tensor&lt;*xf32&gt;) -&gt; ()
    %cast_3 = tensor.cast %inserted_slice_1 : tensor&lt;1x5x4xi32&gt; to tensor&lt;*xi32&gt;
    call @<!-- -->printMemrefI32(%cast_3) : (tensor&lt;*xi32&gt;) -&gt; ()
    return
  }
}

stack trace:

PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #<!-- -->0 0x000055730697b799 llvm::sys::PrintStackTrace(llvm::raw_ostream&amp;, int) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:11
 #<!-- -->1 0x000055730697bc4b PrintStackTraceSignalHandler(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
 #<!-- -->2 0x0000557306979e7f llvm::sys::RunSignalHandlers() /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Signals.cpp:105:5
 #<!-- -->3 0x000055730697c31e SignalHandler(int) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #<!-- -->4 0x00007ff6b48c0420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #<!-- -->5 0x0000557306ad7646 mlir::TypeStorage::getAbstractType() /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/TypeSupport.h:173:5
 #<!-- -->6 0x0000557306ad75f8 mlir::Type::getTypeID() /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Types.h:117:37
 #<!-- -->7 0x0000557306aebab5 bool mlir::detail::StorageUserBase&lt;mlir::IntegerType, mlir::Type, mlir::detail::IntegerTypeStorage, mlir::detail::TypeUniquer&gt;::classof&lt;mlir::Type&gt;(mlir::Type) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:113:16
 #<!-- -->8 0x0000557306aeba8d llvm::CastInfo&lt;mlir::IntegerType, mlir::Type const, void&gt;::isPossible(mlir::Type) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Types.h:423:7
 #<!-- -->9 0x0000557306e0ab7d llvm::DefaultDoCastIfPossible&lt;mlir::IntegerType, mlir::Type const, llvm::CastInfo&lt;mlir::IntegerType, mlir::Type const, void&gt;&gt;::doCastIfPossible(mlir::Type) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/Casting.h:311:9
#<!-- -->10 0x0000557306df7f08 decltype(auto) llvm::dyn_cast&lt;mlir::IntegerType, mlir::Type&gt;(mlir::Type const&amp;) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/Casting.h:651:10
#<!-- -->11 0x000055730c5f9e68 mlir::Type::isSignlessInteger(unsigned int) const /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/IR/Types.cpp:82:20
#<!-- -->12 0x000055730c45d00e mlir::IntegerAttr::get(mlir::Type, llvm::APInt const&amp;) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/IR/BuiltinAttributes.cpp.inc:369:12
#<!-- -->13 0x000055730c45141a mlir::Builder::getIndexAttr(long) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/IR/Builders.cpp:149:10
#<!-- -->14 0x0000557306d2d5d6 mlir::arith::ConstantIndexOp::build(mlir::OpBuilder&amp;, mlir::OperationState&amp;, long) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Arith/IR/ArithOps.cpp:293:36
#<!-- -->15 0x0000557306c170ee mlir::arith::ConstantIndexOp mlir::OpBuilder::create&lt;mlir::arith::ConstantIndexOp, long&gt;(mlir::Location, long&amp;&amp;) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Builders.h:518:5
#<!-- -->16 0x00005573091f598e mlir::getOrCreateRanges(mlir::OffsetSizeAndStrideOpInterface, mlir::OpBuilder&amp;, mlir::Location) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp:3048:17
#<!-- -->17 0x000055730f501e5c mlir::tensor::ExtractSliceOp::getOrCreateRanges(mlir::OpBuilder&amp;, mlir::Location) /data/szy/MLIR/llvm-debug/llvm-project/build/tools/mlir/include/mlir/Dialect/Tensor/IR/TensorOps.h.inc:1957:12
#<!-- -->18 0x000055730f500235 getRangeFromOperandShape(mlir::OpBuilder&amp;, mlir::Location, mlir::Value, unsigned int) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:176:46
#<!-- -->19 0x000055730f500095 fuse(mlir::OpBuilder&amp;, mlir::linalg::LinalgOp, mlir::AffineMap, mlir::OpOperand&amp;) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:190:5
#<!-- -->20 0x000055730f4ffd60 mlir::linalg::fuseProducerOfTensor(mlir::OpBuilder&amp;, mlir::OpResult, mlir::OpOperand&amp;) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:271:7
#<!-- -->21 0x000055730f4ff92f mlir::linalg::fuseProducerOfTensor(mlir::OpBuilder&amp;, mlir::OpOperand&amp;) /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Fusion.cpp:0:10
#<!-- -->22 0x000055730b813e99 fuseLinalgOpsGreedily(mlir::func::FuncOp) /data/szy/MLIR/llvm-debug/llvm-project/mlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp:47:20
#<!-- -->23 0x000055730b8139a6 (anonymous namespace)::TestLinalgGreedyFusion::runOnOperation() /data/szy/MLIR/llvm-debug/llvm-project/mlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp:90:24
#<!-- -->24 0x000055730c2733f4 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
#<!-- -->25 0x000055730c273395 void llvm::function_ref&lt;void ()&gt;::callback_fn&lt;mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1&gt;(long) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:5
#<!-- -->26 0x000055730699f859 llvm::function_ref&lt;void ()&gt;::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#<!-- -->27 0x000055730c27613b void mlir::MLIRContext::executeAction&lt;mlir::PassExecutionAction, mlir::Pass&amp;&gt;(llvm::function_ref&lt;void ()&gt;, llvm::ArrayRef&lt;mlir::IRUnit&gt;, mlir::Pass&amp;) /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/MLIRContext.h:281:3
#<!-- -->28 0x000055730c26ef97 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:532:17
#<!-- -->29 0x000055730c26f4b7 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&amp;, 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:592:16
#<!-- -->30 0x000055730c2746e8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&amp;) const /data/szy/MLIR/llvm-debug/llvm-project/mlir/lib/Pass/Pass.cpp:813:36
#<!-- -->31 0x000055730c274540 auto void mlir::parallelForEach&lt;__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&gt;(mlir::MLIRContext*, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&amp;&amp;)::'lambda'(__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;&amp;&amp;)::operator()&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&amp;&gt;(__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;&amp;&amp;) const /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Threading.h:120:56
#<!-- -->32 0x000055730c274f71 llvm::LogicalResult mlir::failableParallelForEach&lt;__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, void mlir::parallelForEach&lt;__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&gt;(mlir::MLIRContext*, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&amp;&amp;)::'lambda'(__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;&amp;&amp;)&gt;(mlir::MLIRContext*, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&amp;&amp;)::'lambda'()::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/mlir/include/mlir/IR/Threading.h:62:18
#<!-- -->33 0x000055730c274dad std::_Function_handler&lt;void (), llvm::LogicalResult mlir::failableParallelForEach&lt;__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, void mlir::parallelForEach&lt;__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&gt;(mlir::MLIRContext*, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&amp;&amp;)::'lambda'(__gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;&amp;&amp;)&gt;(mlir::MLIRContext*, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, __gnu_cxx::__normal_iterator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator&lt;mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&gt;&gt;&gt;, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&amp;&amp;)::'lambda'()&gt;::_M_invoke(std::_Any_data const&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:302:7
#<!-- -->34 0x000055730c283e5e std::function&lt;void ()&gt;::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:7
#<!-- -->35 0x000055730c283e25 void std::__invoke_impl&lt;void, std::function&lt;void ()&gt;&gt;(std::__invoke_other, std::function&lt;void ()&gt;&amp;&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:7
#<!-- -->36 0x000055730c283de5 std::__invoke_result&lt;std::function&lt;void ()&gt;&gt;::type std::__invoke&lt;std::function&lt;void ()&gt;&gt;(std::function&lt;void ()&gt;&amp;&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:7
#<!-- -->37 0x000055730c283dbd void std::thread::_Invoker&lt;std::tuple&lt;std::function&lt;void ()&gt;&gt;&gt;::_M_invoke&lt;0ul&gt;(std::_Index_tuple&lt;0ul&gt;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:244:6
#<!-- -->38 0x000055730c283d45 std::thread::_Invoker&lt;std::tuple&lt;std::function&lt;void ()&gt;&gt;&gt;::operator()() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/thread:251:4
#<!-- -->39 0x000055730c283c4c std::__future_base::_Task_setter&lt;std::unique_ptr&lt;std::__future_base::_Result&lt;void&gt;, std::__future_base::_Result_base::_Deleter&gt;, std::thread::_Invoker&lt;std::tuple&lt;std::function&lt;void ()&gt;&gt;&gt;, void&gt;::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:1362:6
#<!-- -->40 0x000055730c283b10 std::_Function_handler&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; (), std::__future_base::_Task_setter&lt;std::unique_ptr&lt;std::__future_base::_Result&lt;void&gt;, std::__future_base::_Result_base::_Deleter&gt;, std::thread::_Invoker&lt;std::tuple&lt;std::function&lt;void ()&gt;&gt;&gt;, void&gt;&gt;::_M_invoke(std::_Any_data const&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
#<!-- -->41 0x000055730c2839b1 std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
#<!-- -->42 0x000055730c2837e9 std::__future_base::_State_baseV2::_M_do_set(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:561:27
#<!-- -->43 0x000055730c283968 void std::__invoke_impl&lt;void, void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&amp;&amp;)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*&amp;&amp;, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*&amp;&amp;, bool*&amp;&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:73:7
#<!-- -->44 0x000055730c2838dd std::__invoke_result&lt;void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;::type std::__invoke&lt;void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;(void (std::__future_base::_State_baseV2::*&amp;&amp;)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*&amp;&amp;, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*&amp;&amp;, bool*&amp;&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:7
#<!-- -->45 0x000055730c2838a4 void std::call_once&lt;void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;(std::once_flag&amp;, void (std::__future_base::_State_baseV2::*&amp;&amp;)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*&amp;&amp;, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*&amp;&amp;, bool*&amp;&amp;)::'lambda'()::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:673:7
#<!-- -->46 0x000055730c283874 void std::call_once&lt;void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;(std::once_flag&amp;, void (std::__future_base::_State_baseV2::*&amp;&amp;)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*&amp;&amp;, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*&amp;&amp;, bool*&amp;&amp;)::'lambda0'()::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:676:70
#<!-- -->47 0x000055730c283841 void std::call_once&lt;void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;(std::once_flag&amp;, void (std::__future_base::_State_baseV2::*&amp;&amp;)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*&amp;&amp;, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*&amp;&amp;, bool*&amp;&amp;)::'lambda0'()::__invoke() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:676:21
#<!-- -->48 0x00007ff6b48bd4df __pthread_once_slow /build/glibc-LcI20x/glibc-2.31/nptl/pthread_once.c:118:7
#<!-- -->49 0x000055730c274bd7 __gthread_once(int*, void (*)()) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/gthr-default.h:700:5
#<!-- -->50 0x000055730c2837a7 void std::call_once&lt;void (std::__future_base::_State_baseV2::*)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*&gt;(std::once_flag&amp;, void (std::__future_base::_State_baseV2::*&amp;&amp;)(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*, bool*), std::__future_base::_State_baseV2*&amp;&amp;, std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;*&amp;&amp;, bool*&amp;&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/mutex:683:11
#<!-- -->51 0x000055730c283575 std::__future_base::_State_baseV2::_M_set_result(std::function&lt;std::unique_ptr&lt;std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter&gt; ()&gt;, bool) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:403:6
#<!-- -->52 0x000055730c28555f std::__future_base::_Deferred_state&lt;std::thread::_Invoker&lt;std::tuple&lt;std::function&lt;void ()&gt;&gt;&gt;, void&gt;::_M_complete_async() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:1610:9
#<!-- -->53 0x000055730c285cea std::__future_base::_State_baseV2::wait() /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:334:2
#<!-- -->54 0x000055730c285cca std::__basic_future&lt;void&gt;::wait() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/future:693:7
#<!-- -->55 0x000055730c285c75 std::shared_future&lt;void&gt; llvm::ThreadPoolInterface::asyncImpl&lt;void&gt;(std::function&lt;void ()&gt;, llvm::ThreadPoolTaskGroup*)::'lambda'()::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/ThreadPool.h:114:46
#<!-- -->56 0x000055730c285abd std::_Function_handler&lt;void (), std::shared_future&lt;void&gt; llvm::ThreadPoolInterface::asyncImpl&lt;void&gt;(std::function&lt;void ()&gt;, llvm::ThreadPoolTaskGroup*)::'lambda'()&gt;::_M_invoke(std::_Any_data const&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:302:7
#<!-- -->57 0x000055730c283e5e std::function&lt;void ()&gt;::operator()() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:7
#<!-- -->58 0x000055731078d211 llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/ThreadPool.cpp:103:5
#<!-- -->59 0x000055731078e475 llvm::StdThreadPool::grow(int)::$_0::operator()() const /data/szy/MLIR/llvm-debug/llvm-project/llvm/lib/Support/ThreadPool.cpp:49:5
#<!-- -->60 0x000055731078e3f9 auto void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*)::'lambda'(auto&amp;&amp;, auto&amp;&amp;...)::operator()&lt;llvm::StdThreadPool::grow(int)::$_0&amp;&gt;(auto&amp;&amp;, auto&amp;&amp;...) const /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/thread.h:44:9
#<!-- -->61 0x000055731078e3cd auto std::__invoke_impl&lt;void, void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*)::'lambda'(auto&amp;&amp;, auto&amp;&amp;...), llvm::StdThreadPool::grow(int)::$_0&amp;&gt;(std::__invoke_other, void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*)::'lambda'(auto&amp;&amp;, auto&amp;&amp;...)&amp;&amp;, llvm::StdThreadPool::grow(int)::$_0&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:7
#<!-- -->62 0x000055731078e37d std::__invoke_result&lt;auto, auto...&gt;::type std::__invoke&lt;void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*)::'lambda'(auto&amp;&amp;, auto&amp;&amp;...), llvm::StdThreadPool::grow(int)::$_0&amp;&gt;(auto&amp;&amp;, auto&amp;&amp;...) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:7
#<!-- -->63 0x000055731078e34d decltype(auto) std::__apply_impl&lt;void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*)::'lambda'(auto&amp;&amp;, auto&amp;&amp;...), std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&amp;, 0ul&gt;(auto&amp;&amp;, std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&amp;, std::integer_sequence&lt;unsigned long, 0ul&gt;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/tuple:1684:7
#<!-- -->64 0x000055731078e2ad decltype(auto) std::apply&lt;void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*)::'lambda'(auto&amp;&amp;, auto&amp;&amp;...), std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&amp;&gt;(auto&amp;&amp;, std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&amp;) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/tuple:1694:7
#<!-- -->65 0x000055731078e27e void llvm::thread::GenericThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/thread.h:46:3
#<!-- -->66 0x000055731078dfc5 void* llvm::thread::ThreadProxy&lt;std::tuple&lt;llvm::StdThreadPool::grow(int)::$_0&gt;&gt;(void*) /data/szy/MLIR/llvm-debug/llvm-project/llvm/include/llvm/Support/thread.h:56:5
#<!-- -->67 0x00007ff6b48b4609 start_thread /build/glibc-LcI20x/glibc-2.31/nptl/pthread_create.c:478:7
#<!-- -->68 0x00007ff6b3fd9353 __clone /build/glibc-LcI20x/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] mlir:linalg
Projects
None yet
Development

No branches or pull requests

2 participants