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

    <tr>
        <th>Summary</th>
        <td>
            [M68k] Building simple program using std::future results in internal compiler error
        </td>
    </tr>

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

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

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

<pre>
    Trying to cross-compile the following sample program:

```C++
#include <thread>
#include <future>
#include <iostream>

int main(){
  auto future = std::async(std::launch::async, [](){
    std::cout << "I'm a thread" << std::endl;
  });

  future.get();

  return 0;
}
```

Trying to compile this code using the M68k backend results in an internal compiler error:

```bash
glaubitz@node54:/data/home/glaubitz> /data/home/glaubitz/llvm-project/stage1.install/bin/clang -target m68k-linux-gnu future.cc -o future.o -I /data/home/glaubitz/sid-m68k-sbuild/usr/m68k-linux-gnu/include/c++/12/m68k-linux-gnu/ -I /data/home/glaubitz/sid-m68k-sbuild/usr/m68k-linux-gnu/include/ -I /data/home/glaubitz/sid-m68k-sbuild/usr/include/c++/12/ -I /data/home/glaubitz/sid-m68k-sbuild/usr/include/m68k-linux-gnu/c++/12/ -c
Should not custom lower this!
UNREACHABLE executed at /data/home/glaubitz/llvm-project/llvm/lib/Target/M68k/M68kISelLowering.cpp:1353!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /data/home/glaubitz/llvm-project/stage1.install/bin/clang -target m68k-linux-gnu future.cc -o future.o -I /data/home/glaubitz/sid-m68k-sbuild/usr/m68k-linux-gnu/include/c++/12/m68k-linux-gnu/ -I /data/home/glaubitz/sid-m68k-sbuild/usr/m68k-linux-gnu/include/ -I /data/home/glaubitz/sid-m68k-sbuild/usr/include/c++/12/ -I /data/home/glaubitz/sid-m68k-sbuild/usr/include/m68k-linux-gnu/c++/12/ -c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'future.cc'.
4.      Running pass 'M68k DAG->DAG Pattern Instruction Selection' on function '@_ZNSt9once_flag18_Prepare_executionC2IZSt9call_onceIMNSt13__future_base13_State_baseV2EFvPSt8functionIFSt10unique_ptrINS3_12_Result_baseENS7_8_DeleterEEvEEPbEJPS4_SC_SD_EEvRS_OT_DpOT0_EUlvE_EERSI_'
 #0 0x0000000001f5cb9f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000000001f5a754 llvm::sys::CleanupOnSignal(unsigned long) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x1f5a754)
 #2 0x0000000001eab210 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f0e429e48c0 __restore_rt (/lib64/libpthread.so.0+0x168c0)
 #4 0x00007f0e4112acbb raise (/lib64/libc.so.6+0x4acbb)
 #5 0x00007f0e4112c355 abort (/lib64/libc.so.6+0x4c355)
 #6 0x0000000001eb419a (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x1eb419a)
 #7 0x0000000000f002f9 (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0xf002f9)
 #8 0x0000000002dfef40 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) (.part.412) LegalizeDAG.cpp:0:0
 #9 0x0000000002e0c598 llvm::SelectionDAG::Legalize() (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x2e0c598)
#10 0x0000000002ecb861 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x2ecb861)
#11 0x0000000002ecf22d llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x2ecf22d)
#12 0x0000000002ed0d41 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.1088) SelectionDAGISel.cpp:0:0
#13 0x0000000001304db2 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.70) MachineFunctionPass.cpp:0:0
#14 0x000000000185a5c8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x185a5c8)
#15 0x000000000185a8e9 llvm::FPPassManager::runOnModule(llvm::Module&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x185a8e9)
#16 0x000000000185b748 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x185b748)
#17 0x00000000022c3ef3 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x22c3ef3)
#18 0x0000000002fff820 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x2fff820)
#19 0x0000000003ce5ca9 clang::ParseAST(clang::Sema&, bool, bool) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x3ce5ca9)
#20 0x0000000002ffe530 clang::CodeGenAction::ExecuteAction() (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x2ffe530)
#21 0x00000000029c0d19 clang::FrontendAction::Execute() (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x29c0d19)
#22 0x000000000295b23a clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x295b23a)
#23 0x0000000002a8e1fb clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x2a8e1fb)
#24 0x0000000000b30701 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0xb30701)
#25 0x0000000000b2bef8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#26 0x00000000027ecab5 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#27 0x0000000001eab973 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x1eab973)
#28 0x00000000027efcbe clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x27efcbe)
#29 0x00000000027befd3 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x27befd3)
#30 0x00000000027bfb83 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x27bfb83)
#31 0x00000000027c610c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0x27c610c)
#32 0x0000000000b2ea2c clang_main(int, char**) (/data/home/glaubitz/llvm-project/stage1.install/bin/clang+0xb2ea2c)
#33 0x00007f0e4111529d __libc_start_main (/lib64/libc.so.6+0x3529d)
#34 0x0000000000b26d8a _start /home/abuild/rpmbuild/BUILD/glibc-2.31/csu/../sysdeps/x86_64/start.S:122:0
clang-16: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 16.0.0 (https://github.com/llvm/llvm-project.git 907baeec49bfbe9e76498634a9418e1dc6c973d9)
Target: m68k-unknown-linux-gnu
Thread model: posix
InstalledDir: /data/home/glaubitz/llvm-project/stage1.install/bin
clang-16: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-16: note: diagnostic msg: /tmp/future-96ab84.cpp
clang-16: note: diagnostic msg: /tmp/future-96ab84.sh
clang-16: note: diagnostic msg: 

********************
glaubitz@node54:/data/home/glaubitz>
```

Attaching the preprocessed source plus run script in a zipped archive.

[future-82834f.zip](https://github.com/llvm/llvm-project/files/10077022/future-82834f.zip)

CC @mshockwave @0x59616e 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWklz27gS_jXyBSUVCS4iDz7IWhJNObHLcuZVzYUFgqDEF26PAL3k108DICVClpJ4YucyzyVLJJbG143esMRV8nx53zxn5RaJCtGm4nxMq6LOcobEjqG0yvPqUVZzUtRQWDfVtiHFyJmNrMXI6r99S3_mI3wlP7oUO1lJ8zZhaOTMxa5hJBk5y1OVaSvahp2pzCouoG9xqFbfWSlQQbJyhIMRDkfTblSESAu8aIrQfYG4SCReZ0b4c0mh-b4gJ21Jd0blHI28q5G3eEEVHejQqhUSGHzQCOP1CE8LRFDHIcZ93b4DK5N85OxJjaYLSbsv6Is15MmWiW7w4wYNgwYlsg4VQMicgGGHwcTupzTj8AJibbmqgin-5AdfUUzoVwAJI_A2FxxlJSIlfAvWlCTv-zeINU3VnJv8mPCdLtqCYONMfBu5Vgmjea7sglcJEQR-dlXB4GffyFmi85V4lecPxRj07r-MgmBWXJAtsydZCQ95DgWxVIEVzQkwNBakAfmhApga51nZPo23ZdtLllI07jVjUqHx-rvj8iwZKzo8brMc5nXV8ga-TdpQ0KmqBNGpP17Z-FTLdxjyn5I8C_rXCb5A-2IEqtVks6vaPEFlJRBtuagKBM4GtEyq6QjbutGXz3fL2fzj7Op6idgTo61gCSLiNSojX-VPFsP3vdIQeJCK3_2sNyy_lkODUUxoXYO62o7n7DHcXi9nmyXibVxkAiw9brdgKnXVCGldOyFqrjVcwsjEro0nYDKDkU08Gect41ISBGyu93TSGGkDNqSsUTSEMumOahioqSjjHPjmVdvoYtmTcF7RjEiBNG2JOG2yWkw62QoggpK2qPfmak2Q-rvVPhyBINqClUJi_78F_ist0O5UAqIVq1LpiWvScDBBMDAZD6oUpeD4dWPcNZ7LALJlJWuIyKpSVzpd5V1bljK01KCcwMV0BRFWtkK3suATKUF3AOwUQVFRJS1EJXjbqwc8dwrsniGo4tVi9mEMaOEH6AoZpdAa1LFp9Vhgzkw9dQOlPQh4h5gU_fV5I8KqpCxKc7K1g-gWjIw0LNIOBlrO8fovaENBwSPZcP0JuthOFGmkEcQ6Bq9gZUK__ImXq4fbjQj6sdYr6GC1Zfa_lkW1aNafN05k4-hOhVjVZ_l5M42CaAFogYXl8mG5vI2Xf9xu3GgzjzaLCIruNtHNfbSob-6taPklf1hC4d1mHUlOdFoAyZKFrCer_7NTj8ZhCmYO8Vu5gXvpSzbZFkL5R_AbuZyA4KHKQHXAaYVIV_HO81nqf0_bPqJNpp6LlF9TqQ1_5vphnjNStvVNqanBCG3J4RGcU16VWzmOSmvexM2ALltPHRiZKe3RYgMtIzG2LTSXXvWO0eqBNc_HcgAhSWxGm3kFmc-TOC0QpxtimlrMxSFzA2qhKILUSVSgGY3o-IRw47v6t9ap4YRXE0tD96GTAdwdUrVtTGgco4ZknL0kRyUhXxFyZTuDkHdEiDqeh0hcncI1JCTbGYR8U5Sxa4fkzadQkzXGnQ7HtVLLwumbq46magwbDIfFScpS15LDkrIqn4uq5agkBeO1Csuh1vm9nwFHdM22JM--MV3Tv93UQOJgLZvF50p66FlnDhPwOmLiSqccor4PEDuteaEBkVnUC4OBKQ7RmCj0euKthdgh2EtROgvLhEjjwLfPQJRJV-c6QCYfWDkrkyXkVxL9O-FVcAy89hHeFOPkh3h16SzPrwjP6FVe0a_cmOZ90KMVoBlh_324kWANbrDJTWIl7o-lD6njTfmJ0F1Wsh64wc2LOt_QXtsK1GwdU3-pwxKiY3gVx3KTGKOzY8mkYYDyJLxzuKbSwaITBE8Dcw1ggUc8OjSu1a3s2ucvr4b0pk5TgzNm3jtGH7DwJ9B_UhmYOdtd0XshB2AGcv8IeTx1h3LPwYXRZ_084GFd1Af1_Z34JTwDvxGuMIRbljpId1F4pEu70tsrN62oW7m5M6heZGRbVlxklC_LLWiqQj4fUvgIqQNrNow0dHdTS73iA8diNO086Q9a6SXwDxpdw9OpJgN3IuR6-Y6lZnE_AbMjgp0QZp1lDLbHDkkyrEMOhBryGNWPTQYZdrcBOOyUsJTIRDpR2fMPOjpL-XkHJ6zn21AIM5FI0zTA1gk5QI7JYfndWaPORyFRL3muVlVfyuxIU2ab-y4vfaeAoqEavBgZh0OZR0k45OVWrhYBmIl0wwrSaUtcVfnh980xd5CGmLF1JH_mOdYJG-n0UNuo3lfqVfNdkg8NxEBqJh8htRLbkO6qkfO9N5kh1HcCqTEYIM2cIvRi7BBTnHpvWK6_CayUT0v0PFfvo8sap8GIkXlgiEN2GhuOWkM-8PNQUfIS_gt-98n8mzKg8RkMGBmKFTvW1LIRpXbUnYIcHOCsacizdMzOnO5I0_vvmXKC4JSNMigY7AW8MR8apcGGZ7KBY5YGqBf-3L5XnmK4ZiqA9J8wXtVF_RM8KR1KmgwW7yezO2xkGXjKKIk9xfYgcPU7N7CUl5JTtf1JzFI3kftBcnc2SkuJ46AVeuxOQ-Y2KEkBHv3YZE_O0KFQh1uSG4WHKNsFsUEMjCL69GTb-iWWixEZ8DIJSgnJaCwLItGQTG746uojcsCcVHl5wrOvl01mBw-udESLXnUZ4WlOijghcj9qLyvgtNvy-aOKT0_I9HijJpw6g7k4tR2ja-7ackNSlj8b8vz-3L1DJqgRG4odHOlYSmOG_tU68uZeUQvVkLq5KTIFb5I4Z6WufDd5EU37qTAc_VFH2eBcrvydpjMjEXo3uSi2h3Ix94ShQRoHr5YLWC8_LxSovc6AmTOrgxdue69DNcmk-qid15-XY6dov0WaUliGNM1UbUp926LnkC8Gz0ZScSKbODcLv1Gab5-7aPEY8sNHQZ8R3Mmvz156_Molzd4pG1HjGsAcc7vc9nCYoCiSm-PgJ0kjFL7vbp07so9B9ChTw34SEKTJoQMjpD--a-qif7z6sr5eKCZhiDGeOLZkgMszvMlEsvjME1bLs-OnwI8UGEV2soFJtjE-BFnF9dj2oWR_bUNLHKVdBi7vdSitSAlktAl6zMQOsadM6DsiNvAhj3E4Q-MHedDNGUPZIC0OByMhUDUutzxtf2JN1M75687FJ9AAhdY0JoxRNwQTZCGb-m4Y-I5LQteGhDihPoWomxxWKN1pPrCmzjzb8mtZPZaDs0_dSh2_yPNGtemJ6opnT7pqrZWFJYtMSehX1e2F7MtK7k7MULLf6EEF36qhOn35hc_gGk53R2F2fz-bf0T3H5dodXN9ffOf9ecPaLW-Xm7Q_Y0qvvryAd0tb2_u7kf9zYDbU3cMAi4t8Ow9g32DhiGVEqhrGXuSPykCvBJFDd_6WHUc-iQOXJUx_jqV_jbSq2bjjebktTegvnONayaE2sPW17VOXAdBdd7ywcyo21voW1bXckoa6PvAJgZ73lUnqQAHjptOoK2-8vbqqyzydoD0RjZ40KmF8WESBqT3rlF9z-cIpFLwXUW_PpIHJt-sJy_0bZ91s3DBLm3fD7ENRIKL5BIs3gnJhchEzi4Bvbq64y3QlfSa6nZiNryd2N1u20fI7i7g4HLbmZttF22TX_7z6zxeaPv2xe4yTlwv8YIU-1MH0yQlU0o95tA4jm0_dulFTmKWc8nJCOOSPSJFAp6BqYvsEoMgbVvu6ruuG0z8NMBh7FvygAenPgV5MQhK-UTimFTN9qK5VJDidsuhMoekjB8qwXrlMbwSnKRPWrGrmste-S7U2JcK-99rw9fl">