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

    <tr>
        <th>Summary</th>
        <td>
            clang: fatal error: error in backend: Cannot emit physreg copy instruction
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Compiler explorer: https://godbolt.org/z/fTrKEjrTx.

The following program `small.c` triggers a crash in clang-18:

``` sh
% cat small.c
void f(int x) {
      register int s3 asm("19") = x;
 asm("" : : "r"(s3));
}

% clang -O0
fatal error: error in backend: Cannot emit physreg copy instruction
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: /opt/compiler-explorer/clang-assertions-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-9.2.0 -fcolor-diagnostics -fno-crash-diagnostics -O0 <source>
1.  <eof> parser at end of file
2. Code generation
3.  Running pass 'Function Pass Manager' on module '<source>'.
4.  Running pass 'Post-RA pseudo instruction expansion pass' on function '@f'
 #0 0x000000000372f498 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x372f498)
 #1 0x000000000372d15c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x372d15c)
 #2 0x0000000003675fe6 llvm::CrashRecoveryContext::HandleExit(int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3675fe6)
 #3 0x00000000037244ae llvm::sys::Process::Exit(int, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x37244ae)
 #4 0x0000000000bed7da LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x0000000003680983 llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3680983)
 #6 0x0000000003680ae8 (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3680ae8)
 #7 0x00000000024e12b5 llvm::X86InstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, llvm::DebugLoc const&, llvm::MCRegister, llvm::MCRegister, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x24e12b5)
 #8 0x0000000002d7e248 llvm::TargetInstrInfo::lowerCopy(llvm::MachineInstr*, llvm::TargetRegisterInfo const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x2d7e248)
 #9 0x0000000002e73b97 (anonymous namespace)::ExpandPostRA::runOnMachineFunction(llvm::MachineFunction&) ExpandPostRAPseudos.cpp:0:0
#10 0x0000000002b04411 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#11 0x00000000030b2af9 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x30b2af9)
#12 0x00000000030b2d31 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x30b2d31)
#13 0x00000000030b3552 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x30b3552)
#14 0x00000000039a3c02 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) BackendUtil.cpp:0:0
#15 0x00000000039a40a9 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x39a40a9)
#16 0x000000000499c34f clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x499c34f)
#17 0x0000000005ea1529 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5ea1529)
#18 0x000000000499b538 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x499b538)
#19 0x00000000041fefa9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x41fefa9)
#20 0x000000000418044e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x418044e)
#21 0x00000000042de12e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x42de12e)
#22 0x0000000000befa56 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbefa56)
#23 0x0000000000be731a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#24 0x0000000003fdc649 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#25 0x0000000003675f24 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3675f24)
#26 0x0000000003fdcc3f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#27 0x0000000003fa4e05 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fa4e05)
#28 0x0000000003fa586d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fa586d)
#29 0x0000000003fad795 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fad795)
#30 0x0000000000becefc clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbecefc)
#31 0x0000000000ae7091 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xae7091)
#32 0x00007f3aceb41083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#33 0x0000000000be6dfe _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbe6dfe)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
```

Clang version:

```
clang version 18.0.0 (https://github.com/llvm/llvm-project.git ab737a86993bc7bf92cbb9d51f47f8825a717333)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-assertions-trunk/bin
Compiler returned: 0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWk1z4zbS_jX0BSUVCVL8OPggy9abyTtT47Kd1N5UINikkAEBLgDa0v76LfBDImh5Jtko2cNO2WMJbDaefrrR3QBJtGaVALj1Vnfe6v6GtGYv1S2VQlScs5tcFsfbjawbxkEhODRcKlBeuEZ7YxrthWsPbz28rWSRS26WUlUe3v7Lw9vyRf3_w2_q5bD0_HvPX_f_v-wBlZJz-cZEhRolK0Vq5MW-rgnnS-rFPjKKVRUojQiiiug9YgJRTkS1CFI74USdF_v9D9L7YQSvECUGjfq6wVfJClR6OGXCoIOHM-Qld_0l1P1TUDFtQCEroENEdO3h1MM4yDyMuxvCe3TwwvGuk4CHMbJ0dL8Yq24o1aGHM_sz3uAl9w5ui9KahBZf_X6oJIZwBErJjt7ug7U8J_QbiMKObYgQ0iComUHN_qgVVIjK5oiY0Ea11DApemWPnx_Wzw9It7mVJShvK6SgkcogI-euY2bf5ksqaw9vOX8d_ywaJX8Dajy8ZVq3oD28RUQUiAnK2wKQ2cPgIIvRKELBwxvUKGiUpKA1FEjLVvXD9k6itaSMGCiQagXSVLHGDPHxbAj9hoq2bk4-9pcIPQ4hQlTV1iCM7oneysYCo0NkLk6Ribd9qBCtQVlC9MKoVnzz8DZnYryMFlXxRlS5iNCiQgtpNZKmsXpb07RmqdGitiSgxeKQxgui64U-CkMOXnjPhAGOFs9osagoXRgpOd0TJrzw_rvArHC2xEsfLUoquVSLgpFKSG0Y1WhRCrno6HSHv_rICzcDj-FDz0ywRHYUZOmFD6ghSoNCxCAQBZIlKhmHXhAv0UYWgCoQoMg5QMIlQk-tEN0qJFojDyfbVnQhhB7twBciSGVxJ0gKVMui5WClHDA4GbwXXdD3KLVZPK1Ro6Et5DRIbSIhQttPVniYoxznt7NEfmn_9KvNw6GP_IM__gsTXEZZirpoDddeuNZH3X94VEyYLpZe-oBMz0KKvO2kNgpI7eHYBiUTplvcdin_yZDy8J1_GIDZlX9CHsyQF8GKXkK-4UBE23wVz6wShHs4bUWXnAvEpdV_XZwWhoMTOzjjZFVCPMG5saH5BFS-gjpupDBwMP2Vn4goODwcmOkz7HWR9kAcpOGM0SgicDkWujTUf5ni26BcSn5tRi0MB2c0xennUCQFQZ8___rlwSb3njbl4dSWJw-vLS66JwpRKbQZBkaglAa7mjCxpI1NkH73e5pp5fou9bM0nDDSp_5dV2J2fYmZrouXNyZgnDX-a-jpMTn0xHPQBNLrzkjAXYrJdEYcQYDz1YSmf6TxJ5ukPolS9iO2uj7uj_oJKoexL4TumYA7ohm945J-G3h7J9Hpu2utpz8Zm4Ftdd9cFrMKSsJ1n1mnyu4hb6vPkjo-mijZPA39y_fGT5FkdVyP54FGh-fU4blIAEfTZP1CVAVmRjWXb6A2sjleInrgZ-3a1-sZbbSqJkvn-ob2djiGZo6hkIR5ltgZiZDiWMtWI0Fq0E1XibIxETVEFLY4Pq2H5dmKr2KwdCzCl1g4X7P5EE0VPXY1Vr_PDrYAObUT534UBcH7UB212-o_wXUR0AyJh9NlQ5RZ-vbbBX2XcbmV0c8xKbMJru2jvXXsQ_4woiulkR7WyesWN57jLsLgd-D-0vVQrmOHoetjLsLAwRzOMIerFZ5g5lARehzK5hn9p7rhJwv-HuQWmIPcqaJhRkLq4x-usZqZtdZQ5_z4E_Bm9MN03MNpP3F35a7fZq2HINogbYr-SivYP1vYNcbN3LaZbN4UM7AbW8rJTQWUpOVmVwAHAz-4MXzoMn6GBhC_GMYvr5jVjIvIJxmaWGHtG5R87TYyrpH3543Fg6iYgKGUTER-AlKAegai6P5r03nLqToTUbux-D8QP5Dqk_QPhD4TUV0SObP2bBQT1ROUsxI3hOF6pvCdO8-3fBJGtZq9whOUG2EeZ359LYfst2Ucno_aQD3U4_9GRFxvZfXB4qwspwGLsoyGUXmBxI0Uuq3HJdS3rS-KCM27DeUvgs3CbP38Mm4QrpwfBpCOFU5TtwISrLCzJh7t7nj9_OJifIaaOM3uX9D0DmActOmM83wVphcW1RC4Q8MAtDUwxnJ6bUYtBAej09VEQQmlm2W2ynr3tLqmIK8Or599Cg_7LrzUjyJwKewntE0jERQus_ixPdeO2R6hY4LT-US4gAA7Jgxgz5a8SkreA39nad_4Xg96j8yBjmeb2pKs4tPu1GkR1kqRo83Y4cbd1vbp9N1W97QNvqIFPT7HgHBmQBIGBI2Eb4KXLgtMzHiuCee_AjVyaIcuWDMrVlbHkAEn5SxDhWKvoC6Wduy2OWVB4yjrKJnoHU_Idqpjtbvar7iuYnQ7VsJ5Tui3XSks0nOs9HMPcbMJNrKuiSjmi_ei9041THYlmnCnep0r81C1JkVvt6OHQxD0X3K7W7YVjllMHYuOsB3YGUWY0ePlmTrCuV0H3R56vG5FJicl551ff4uHE07qvCAeTs5U4XQ8UvtZ5pf9sXp3HIaj33Uc9tSKZ1ICdzey33fd1U_McOTEfDwPLho6lf5_LjhmW9YPoyBxiSMR-KsPieu8Rt7VxJFNJ3XPbrQCHzXH3xFdz87rrnzkMRjshFI6Y2SVxsUfZeRnmeuP6fhZ5p-ZNh9tBN6l41MENIRZ5w9HvL-XwSFM_mIeLU0Oj9mMxyLJPoys-8lnpzW40BN8xP_fyOM1k1lPzJQ591GQnwOFkvYoxx5kRN4lkfX7c8MPyvMVuw6LyQHtdHw-gcTPAmThXm_WXqkz69isJWVIKORR4Kch2u04y22uJcrsJhA4yz28PaTxLo4WnIn2sKhE21-gSy2X8XDg608O8u0s844qLkpAvf5rcmrVnuYdo_L8xLx_sFsOvTyiQ3yWhHEo0BszewQHZj1eAEp8i6zVgBavyEikARCbdNnZ7P2C6cP7TTfRKyg95LVLLyRMUI6iKEiX_rKb-I89gV9WzCCSJ2FC0jjLwpwmeZlhmudZsQrKKCnTFK9IEiRhePZMf_BimRlc2opvQr6JiWuHVzIUkALVsgBupRup2aG_1O0rOIfinqk_99y9J258j0SBaZWA7qUGf0bcTXEbFlmYkRu4DeIsieJwlcQ3-9sCsjBMwpiWq1WUkSwK_BWh4AexD6ssgxt2i30cBn4QB2GYhfEySJMQhyTw0xQntCy8yIeaML605C6lqm66Fxtu4wz7wQ0nOXDdvQiD8RB32Fvd36jbzhl5W2kv8jnTRp81GGY43J6i8Upvcdy0it_-569pdAb9OwAA__8nExut">