<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/89203>89203</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            ORC-Lazy JIT crash on `blockaddress` instruction
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Chronostasys
      </td>
    </tr>
</table>

<pre>
    I'm using llvm 18.1.2 and found `lli --jit-kind=orc-lazy` failed whenever it encountered `blockaddress` instruction.

example ir:

```llvm
define i32 @main() nounwind {
entry:
  %1 = alloca i64, align 8
  ; the exception disappear if we comment the line below
  store ptr blockaddress(@test, %bb), ptr %1
 ret i32 0
}

define i32 @test() nounwind {
entry:
  br label %bb
bb:
  ret i32 0
}
```

attempt to run it with:

```bash
lli --jit-kind=orc-lazy test.ll
```

would result in:

```log
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: lli --jit-kind=orc-lazy out2.ll
 #0 0x0000000107db14a0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1494a0)
 #1 0x0000000107daf74c llvm::sys::RunSignalHandlers() (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x14774c)
 #2 0x0000000107db1b54 SignalHandler(int) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x149b54)
 #3 0x0000000183ddba24 (/usr/lib/system/libsystem_platform.dylib+0x180467a24)
 #4 0x0000000109a16060 llvm::Expected<llvm::orc::ThreadSafeModule> llvm::detail::UniqueFunctionBase<llvm::Expected<llvm::orc::ThreadSafeModule>, llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&>::CallImpl<(anonymous namespace)::GlobalCtorDtorScraper>(void*, llvm::orc::ThreadSafeModule&, llvm::orc::MaterializationResponsibility&) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1dae060)
 #5 0x0000000109a16060 llvm::Expected<llvm::orc::ThreadSafeModule> llvm::detail::UniqueFunctionBase<llvm::Expected<llvm::orc::ThreadSafeModule>, llvm::orc::ThreadSafeModule, llvm::orc::MaterializationResponsibility&>::CallImpl<(anonymous namespace)::GlobalCtorDtorScraper>(void*, llvm::orc::ThreadSafeModule&, llvm::orc::MaterializationResponsibility&) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1dae060)
 #6 0x0000000109a0581c llvm::orc::IRTransformLayer::emit(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d9d81c)
 #7 0x00000001099a9a58 llvm::orc::CompileOnDemandLayer::emitPartition(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule, std::__1::map<llvm::orc::SymbolStringPtr, llvm::GlobalValue*, std::__1::less<llvm::orc::SymbolStringPtr>, std::__1::allocator<std::__1::pair<llvm::orc::SymbolStringPtr const, llvm::GlobalValue*>>>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d41a58)
 #8 0x00000001099ac358 llvm::orc::PartitioningIRMaterializationUnit::materialize(std::__1::unique_ptr<llvm::orc::MaterializationResponsibility, std::__1::default_delete<llvm::orc::MaterializationResponsibility>>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d44358)
 #9 0x00000001099c0f70 llvm::orc::MaterializationTask::run() (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d58f70)
#10 0x00000001099cc234 void llvm::detail::UniqueFunctionBase<void, std::__1::unique_ptr<llvm::orc::Task, std::__1::default_delete<llvm::orc::Task>>>::CallImpl<void (*)(std::__1::unique_ptr<llvm::orc::Task, std::__1::default_delete<llvm::orc::Task>>)>(void*, std::__1::unique_ptr<llvm::orc::Task, std::__1::default_delete<llvm::orc::Task>>&) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d64234)
#11 0x00000001099c2c50 llvm::orc::ExecutionSession::dispatchOutstandingMUs() (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d5ac50)
#12 0x00000001099c6368 llvm::orc::ExecutionSession::OL_completeLookup(std::__1::unique_ptr<llvm::orc::InProgressLookupState, std::__1::default_delete<llvm::orc::InProgressLookupState>>, std::__1::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::__1::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&)>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d5e368)
#13 0x00000001099d1a58 llvm::orc::InProgressFullLookupState::complete(std::__1::unique_ptr<llvm::orc::InProgressLookupState, std::__1::default_delete<llvm::orc::InProgressLookupState>>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d69a58)
#14 0x00000001099b2f1c llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::__1::unique_ptr<llvm::orc::InProgressLookupState, std::__1::default_delete<llvm::orc::InProgressLookupState>>, llvm::Error) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d4af1c)
#15 0x00000001099b146c llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::__1::vector<std::__1::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::__1::allocator<std::__1::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::__1::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&)>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d4946c)
#16 0x0000000109a06e30 llvm::orc::LazyCallThroughManager::resolveTrampolineLandingAddress(llvm::orc::ExecutorAddr, llvm::unique_function<void (llvm::orc::ExecutorAddr) const>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d9ee30)
#17 0x0000000109a08f80 void llvm::detail::UniqueFunctionBase<void, llvm::orc::ExecutorAddr, llvm::unique_function<void (llvm::orc::ExecutorAddr) const>>::CallImpl<llvm::Error llvm::orc::LocalLazyCallThroughManager::init<llvm::orc::OrcAArch64>()::'lambda'(llvm::orc::ExecutorAddr, llvm::unique_function<void (llvm::orc::ExecutorAddr) const>) const>(void*, llvm::orc::ExecutorAddr, llvm::unique_function<void (llvm::orc::ExecutorAddr) const>&) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1da0f80)
#18 0x00000001099f5894 llvm::orc::LocalTrampolinePool<llvm::orc::OrcAArch64>::reenter(void*, void*) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1d8d894)
#19 0x0000000100460090 
#20 0x0000000109a8347c llvm::orc::runAsMain(int (*)(int, char**), llvm::ArrayRef<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::optional<llvm::StringRef>) (/opt/local/libexec/llvm-18/lib/libLLVM.dylib+0x1e1b47c)
#21 0x00000001004262a8 runOrcJIT(char const*) (/opt/local/libexec/llvm-18/bin/lli+0x1000062a8)
#22 0x00000001004222a8 main (/opt/local/libexec/llvm-18/bin/lli+0x1000022a8)
#23 0x0000000183a310e0 
[1]    4464 segmentation fault  lli --jit-kind=orc-lazy out2.ll
```

The command would run just fine if remove the `--jit-kind=orc-lazy` argument.





</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWsFS4zwSfhpzUUHZsuPYhxxCArvMQsEC81-ptt1JNMiSV5KBzNNvyUpCbBwmMPlrZreGohLHlro_dX9St-QGrdlcII68wak3mB5BbRZSjSYLJYXUBvRSH2WyWI4uPDosSa2ZmBPOn0oSJCfBCSUgCjKTtSiIF_ucM3J8_I2Z40cmCi-cSpUfc_i-9GKfzIBxLMjzAgU-oSLMEBS5rIVBhU33jMv8EYpCoda2BxPaqDo3TIoTz596_th94guUFUfClBeOtx94se_-LUJ3q8AZE0hYSIkX-SUw4dHEoykRshbPzOIenq7ECqOWG4mEeHQQEC-cEuBc5kBYHHl0QoCzuSDJplV4SswCCb7kWFmopGAaqgpBETYjz0hyWZYoTNOKWzAZcvm87q-NVEgqo0hr-DTxIt-gNlalRwdZ5tHUXtuWFtmqv0LTDM5fWWA43TZIe_RO3J6jzxThkCFfKW_uZtlWg52a107YBgLGYFkZYiRRtbC-f2Zmsct9GeiFu7WTUcQO5oTzd3Q-y5oXRKGuuSFM7OSKnLs7N5dn47szouusZIYAyeo5UVhJ1cBeGFNpK4Oee_R8zsyizk5yWXr0vGGb-zqulPyGufHoOdO6Ru3R82aOMJHzusCGBLkCvSAZ5I9GQY4rbt8ZyB9JUZfVBql_Qpq_GyXnCkoCal5bKlkcZLdpZG3oxjTEo6FP_Bff_QX-sMiCCPxmFltN4Vgvtbu4UUyYBse9BebR5LWRgucHqY1CKD0aWyYyYSyVGkady8qO2c4Tbr9Zhi-Yr40SJO6e-7y8_OvqpFg2v0_9lyBKI_Atuzd4gzZemA2jvA_vbS3u2FwA_yeIgqPSK3b_PKThMMpbkGjXhNkgIi3lHk0OZ5FsELXUh1vqk7AoMqDRSk-t1UaWXmqDpfvprh8qDmYmVbktP_GjeAi0rSLaHmEKQezH2yQ5e6kwN1h44eT1plS5u7hfKITiDmZ4JYuaoxeebfUt0ADj7vqrYP-p8bwWzbp-ChpbEj-sxjJxn5b9za7AoGLA2XewcG5RV1JoljHOzNLyPDxzDSfA-UVZcS-ceDQBIcWylLUmAkrUVTNZUtfyH1xmwCdGqqmR6i5XUKFqgCZPkhUeHe8NOf4s6kOQsAD04_a8HPyhyB-KvE-RuE0Rf5AEeR--i9t7BULblekSlqjcXSyZzVC0Kdzvh4fAXdQNJR4qo_q9_oPhTshbkQXOoObmoUCOBj8j1jp-f3Idwt5pkQTtuDRs2TuFFAZJH56JLCvG8VpMsQRRdGx-A8owO8L_V-P3YSih6ld8tywzye-MYmJ-Y1RbiZu7fwGvcTVP30rmNoPfS7QbwlsJbsthpLX426cVsB2u6MgnuRRuC7FzAM6OFschCBoFMEhaBE06BM3DfoJuKMjE_OK24_uvgpm109YP8H-OqwcxcBR2DJy2DZz7s6G_R0S4B_24yuxrcai8uRgks-FrQLCpvN-Bl9tM00a5jwR_FxX7nPMjfzfD_LRbnZHWM6Qb5ZtRNDYbN5vzT9DxYPBsatHJH34lmgPlF3FEw6hFp6BDJ5oPetl-9oJ5bRl0h1rbwOaGwXQFJl9c10YbEAUT86uvB9s1FgPIB2320w7cOIx7V79-uNeXD7ksK2vySykf6-pTHLsQzfkBau2E3BkwO0LiPm7uF7cJx2-F6gUoLHbjG-ulyJsDx1q7-PXvGtVyp7zZam3YmoGvUqcoNF7tiuxfLu6nzl-dDLvpdofmEwnBWuOFmMm9uzfTtCeF-bGwzhDWglpSttfTtcSbnTnD72iU5n-dvcTr1e0gcxTDOGnN0bA9R4tgRwr9SvzzmvMW-e3j9Uz97efoQRbmdDvPs1ZsHx-lGZ31b_x2rnRQVXzZzPybBWgMfns7bvP9TCmpDpThwWxrj2dNO-iYNojiD5iWryNHTw83qn8xsSO7esL843uQnevJmxZO_TmHuT74TujTKLpLT29ft3qtSIHm3VYbDr62WNH43UjWe8z1fnh7d0nu0EQq13qKswMu3T8Rhj4LfmsD-ydl-JMy_A0pQ5RGcXtF7p5yxhj27kIu4fvSbhjvF0rW88UVCJivz90Uasmf8F5BWUnOBF66Dcl48wb4HfrbRh9fUnaISVdWO5S9UsSwvQ0aduyVzBL_04cAv8AsPZv_Tuzv9b613nsUYM2xVh_Vr1U-Hqt8EUduW795deDRIYcyK8Cjw19GkdfrH7yv-NuxHOo9hj9L2oztHFvOBkka7fTx6xy-kZLv49HVCoDCNC-Ot6y4uTzEuJIiSdvnJ63TQj-KfT_1yeYxbZ_WQRJGw95UU9VirK9cNQ0TpnUK1rwFn5B8Aaq5N15VrryKGSsFy1sbu3tSugw0yx90s8p74cSJ6Qvq9smDUcCMXrfbJ4lcN3znxEI2hTzQ9qSLO7cu4ziEdzDIomErrtCg7R0aU0iIqsW1yr9c3Hs0seDXMe5DHMmsq845Z0631WCFt7TTjnZqtZfAxM9ooV0t7VIGCAMfNwwcnAbeYEoIIVEUR0TjvERhmvNq0uzWyL5lL70VQfcLV40FoiCr6qBakG-1NsTVSc2IwlI-uTIdL_Z3FrOtK3FadWlvP4-KUVikYQpHOAqGQRiFcRCnR4tRHOZpUcRBHGazPIlzOhjkOEx9BJpnfhgcsRH1aeRHQRL4NKXpyczPIz-IhnGcAEKaeZGPJTB-Yq1_ItX8qCk4GiUp9cOjpnRLN1V9lAp8Js1Dj1JvMD1So8ZjWT3XXuRzpo1-lWKY4Ti6vp0c28hFvlzcr-qVpPhBjd5Rrfjo82VSDfD_BgAA__-O_U28">