Issue 136569
Summary [MLIR] JitRunner crashed with `PromoteIntegerOperand ` OP
Labels mlir
Assignees
Reporter sweead
    test commit: [788b50a](https://github.com/llvm/llvm-project/commit/788b50a4384985f2c221cfd8d290cabc6f59e646)

step to reproduce:
```
mlir-runner test.mlir -e main -entry-point-result=void -shared-libs=/home/workdir/llvm-project/build/lib/libmlir_runner_utils.so
```

test case:
```
module {
  llvm.func @malloc(i64) -> !llvm.ptr
  llvm.func @free(!llvm.ptr)
  llvm.func @aligned_alloc(i64, i64) -> !llvm.ptr
 llvm.func @main() -> () {
    llvm.return
  }
  llvm.func @async_execute_fn(%arg0: !llvm.ptr, %arg1: i64, %arg2: i64, %arg3: i64, %arg4: i64, %arg5: i64, %arg6: i64, %arg7: i64, %arg8: i64, %arg9: i64, %arg10: i64, %arg11: i64, %arg12: !llvm.ptr, %arg13: !llvm.ptr, %arg14: i64, %arg15: i64, %arg16: i64, %arg17: i64, %arg18: i64, %arg19: !llvm.ptr, %arg20: !llvm.ptr, %arg21: i64, %arg22: i64, %arg23: i64, %arg24: i64, %arg25: i64, %arg26: !llvm.ptr, %arg27: !llvm.ptr, %arg28: i64, %arg29: i64, %arg30: i64, %arg31: i64, %arg32: i64) -> !llvm.ptr attributes {passthrough = ["presplitcoroutine"], sym_visibility = "private"} {
    %0 = llvm.mlir.constant(0 : i32) : i32
    %1 = llvm.mlir.zero : !llvm.ptr
 %2 = llvm.mlir.constant(1 : i64) : i64
    %3 = llvm.mlir.constant(0 : i64) : i64
    %4 = llvm.mlir.addressof @__resume : !llvm.ptr
    %5 = llvm.mlir.constant(false) : i1
    %6 = llvm.call @mlirAsyncRuntimeCreateToken() : () -> !llvm.ptr
    %7 = llvm.intr.coro.id %0, %1, %1, %1 : (i32, !llvm.ptr, !llvm.ptr, !llvm.ptr) -> !llvm.token
 %8 = llvm.intr.coro.size : i64
    %9 = llvm.intr.coro.align : i64
    %10 = llvm.add %8, %9 : i64
    %11 = llvm.sub %10, %2 : i64
    %12 = llvm.sub %3, %9 : i64
    %13 = llvm.and %11, %12 : i64
    %14 = llvm.call @aligned_alloc(%9, %13) : (i64, i64) -> !llvm.ptr
    %15 = llvm.intr.coro.begin %7, %14 : (!llvm.token, !llvm.ptr) -> !llvm.ptr
    %16 = llvm.intr.coro.save %15 : (!llvm.ptr) -> !llvm.token
    llvm.call @mlirAsyncRuntimeExecute(%15, %4) : (!llvm.ptr, !llvm.ptr) -> ()
    %17 = llvm.intr.coro.suspend %16, %5 : i8
    %18 = llvm.sext %17 : i8 to i32
 llvm.switch %18 : i32, ^bb3 [
      0: ^bb1,
      1: ^bb2
    ]
  ^bb1: // pred: ^bb0
    llvm.call @mlirAsyncRuntimeEmplaceToken(%6) : (!llvm.ptr) -> ()
    llvm.br ^bb2
  ^bb2:  // 2 preds: ^bb0, ^bb1
    %19 = llvm.intr.coro.free %7, %15 : (!llvm.token, !llvm.ptr) -> !llvm.ptr
 llvm.call @free(%19) : (!llvm.ptr) -> ()
    llvm.br ^bb3
  ^bb3:  // 2 preds: ^bb0, ^bb2
    %20 = llvm.mlir.none : !llvm.token
    %21 = llvm.intr.coro.end %15, %5, %20 : (!llvm.ptr, i1, !llvm.token) -> i1
 llvm.return %6 : !llvm.ptr
  }

  llvm.func @mlirAsyncRuntimeAddRef(!llvm.ptr, i64) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeDropRef(!llvm.ptr, i64) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeCreateToken() -> !llvm.ptr attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeCreateValue(i64) -> !llvm.ptr attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeCreateGroup(i64) -> !llvm.ptr attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeEmplaceToken(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeEmplaceValue(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeSetTokenError(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeSetValueError(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeIsTokenError(!llvm.ptr) -> i1 attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeIsValueError(!llvm.ptr) -> i1 attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeIsGroupError(!llvm.ptr) -> i1 attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAwaitToken(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAwaitValue(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAwaitAllInGroup(!llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeExecute(!llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeGetValueStorage(!llvm.ptr) -> !llvm.ptr attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAddTokenToGroup(!llvm.ptr, !llvm.ptr) -> i64 attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAwaitTokenAndExecute(!llvm.ptr, !llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAwaitValueAndExecute(!llvm.ptr, !llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimeAwaitAllInGroupAndExecute(!llvm.ptr, !llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
  llvm.func @mlirAsyncRuntimGetNumWorkerThreads() -> i64 attributes {sym_visibility = "private"}
  llvm.func @__resume(%arg0: !llvm.ptr) attributes {sym_visibility = "private"} {
    llvm.intr.coro.resume %arg0 : !llvm.ptr
    llvm.return
  }
}
```

Crash backtrace:
```
PromoteIntegerOperand Op #3: t115: i8,ch = llvm.coro.suspend t112, TargetConstant:i64<60>, t105, Constant:i1<0>

LLVM ERROR: Do not know how to promote this operator's operand!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-runner test.mlir -e main -entry-point-result=void -shared-libs=/home/workdir/llvm-project/build/lib/libmlir_runner_utils.so
1. Running pass 'Function Pass Manager' on module 'LLVMDialectModule'.
2. Running pass 'X86 DAG->DAG Instruction Selection' on function '@async_execute_fn'
 #0 0x000055d6c52e4808 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/mlir-runner+0x503808)
 #1 0x000055d6c52e247e llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/mlir-runner+0x50147e)
 #2 0x000055d6c52e4fd1 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007fb16890e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fb1689629fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007fb16890e476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007fb1688f47f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x000055d6c5295b4c llvm::report_fatal_error(llvm::Twine const&, bool) (/home/workdir/llvm-project/build/bin/mlir-runner+0x4b4b4c)
 #8 0x000055d6c5295996 (/home/workdir/llvm-project/build/bin/mlir-runner+0x4b4996)
 #9 0x000055d6c5c67e4f (/home/workdir/llvm-project/build/bin/mlir-runner+0xe86e4f)
#10 0x000055d6c5bb42e9 llvm::DAGTypeLegalizer::run() (/home/workdir/llvm-project/build/bin/mlir-runner+0xdd32e9)
#11 0x000055d6c5bb9c14 llvm::SelectionDAG::LegalizeTypes() (/home/workdir/llvm-project/build/bin/mlir-runner+0xdd8c14)
#12 0x000055d6c5b384da llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/home/workdir/llvm-project/build/bin/mlir-runner+0xd574da)
#13 0x000055d6c5b36e76 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xd55e76)
#14 0x000055d6c5b342b1 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xd532b1)
#15 0x000055d6c5b31879 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xd50879)
#16 0x000055d6c6a59ca1 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x1c78ca1)
#17 0x000055d6c833eda5 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x355dda5)
#18 0x000055d6c83469c2 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x35659c2)
#19 0x000055d6c833f7ac llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x355e7ac)
#20 0x000055d6c5ccbaa5 llvm::orc::SimpleCompiler::operator()(llvm::Module&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeeaaa5)
#21 0x000055d6c5d0a736 decltype(auto) llvm::orc::ThreadSafeModule::withModuleDo<llvm::orc::IRCompileLayer::IRCompiler&>(llvm::orc::IRCompileLayer::IRCompiler&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf29736)
#22 0x000055d6c5d0a3ff llvm::orc::IRCompileLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf293ff)
#23 0x000055d6c5d33063 llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf52063)
#24 0x000055d6c5d33063 llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf52063)
#25 0x000055d6c5d0d81d llvm::orc::BasicIRLayerMaterializationUnit::materialize(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf2c81d)
#26 0x000055d6c5cdb352 llvm::orc::MaterializationTask::run() (/home/workdir/llvm-project/build/bin/mlir-runner+0xefa352)
#27 0x000055d6c5cce634 llvm::orc::ExecutionSession::dispatchTask(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task>>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeed634)
#28 0x000055d6c5cdd2ca llvm::orc::ExecutionSession::dispatchOutstandingMUs() (/home/workdir/llvm-project/build/bin/mlir-runner+0xefc2ca)
#29 0x000055d6c5cdf551 llvm::orc::ExecutionSession::OL_completeLookup(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState>>, std::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>>> const&)>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xefe551)
#30 0x000055d6c5cfbcf8 llvm::orc::InProgressFullLookupState::complete(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState>>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf1acf8)
#31 0x000055d6c5cd0e2a llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState>>, llvm::Error) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeefe2a)
#32 0x000055d6c5ccde81 llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>>> const&, llvm::orc::SymbolLookupSet, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef>>>)>, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>>> const&)>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeece81)
#33 0x000055d6c5cdd50b llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>>> const&, llvm::orc::SymbolLookupSet, llvm::orc::LookupKind, llvm::orc::SymbolState, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>>> const&)>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xefc50b)
#34 0x000055d6c5cddaf6 llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>>> const&, llvm::orc::SymbolStringPtr, llvm::orc::SymbolState) (/home/workdir/llvm-project/build/bin/mlir-runner+0xefcaf6)
#35 0x000055d6c5d12120 llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::orc::SymbolStringPtr) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf31120)
#36 0x000055d6c57f3bb9 llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::StringRef) (/home/workdir/llvm-project/build/bin/mlir-runner+0xa12bb9)
#37 0x000055d6c57f2e5c mlir::ExecutionEngine::lookup(llvm::StringRef) const (/home/workdir/llvm-project/build/bin/mlir-runner+0xa11e5c)
#38 0x000055d6c57ef2d4 mlir::ExecutionEngine::lookupPacked(llvm::StringRef) const (/home/workdir/llvm-project/build/bin/mlir-runner+0xa0e2d4)
#39 0x000055d6c57dca0d compileAndExecute((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, void**, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) JitRunner.cpp:0:0
#40 0x000055d6c57d9ff0 compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) JitRunner.cpp:0:0
#41 0x000055d6c57d8326 mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) (/home/workdir/llvm-project/build/bin/mlir-runner+0x9f7326)
#42 0x000055d6c50f0b4f main (/home/workdir/llvm-project/build/bin/mlir-runner+0x30fb4f)
#43 0x00007fb1688f5d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#44 0x00007fb1688f5e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#45 0x000055d6c50f06c5 _start (/home/workdir/llvm-project/build/bin/mlir-runner+0x30f6c5)
Aborted (core dumped)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to