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

    <tr>
        <th>Summary</th>
        <td>
            clang: Assertion `ConstraintID != InlineAsm::ConstraintCode::Unknown && "Failed to convert memory constraint code to constraint id."' failed.
        </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/6Pc6EPPx5.

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

``` sh
% cat small.c
void foo (int x)
{
  asm volatile ("" : : "Vr" (x));
}

% clang -O0 small.c
clang: /root/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:9417: void llvm::SelectionDAGBuilder::visitInlineAsm(const llvm::CallBase&, const llvm::BasicBlock*): Assertion `ConstraintID != InlineAsm::ConstraintCode::Unknown && "Failed to convert memory constraint code to constraint id."' failed.
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 'X86 DAG->DAG Instruction Selection' on function '@foo'
 #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 0x0000000003675a78 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007fc4e3fcc420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fc4e3a8f00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007fc4e3a6e859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007fc4e3a6e729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007fc4e3a7ffd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000000000479285c llvm::SelectionDAGBuilder::visitInlineAsm(llvm::CallBase const&, llvm::BasicBlock const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x479285c)
 #9 0x0000000004782117 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4782117)
#10 0x00000000047b58d9 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x47b58d9)
#11 0x00000000048387d8 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x48387d8)
#12 0x000000000483a3fc llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x483a3fc)
#13 0x000000000483b312 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
#14 0x000000000232257c (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) X86ISelDAGToDAG.cpp:0:0
#15 0x0000000002b04411 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#16 0x00000000030b2af9 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x30b2af9)
#17 0x00000000030b2d31 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x30b2d31)
#18 0x00000000030b3552 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x30b3552)
#19 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
#20 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)
#21 0x000000000499c34f clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x499c34f)
#22 0x0000000005ea1529 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5ea1529)
#23 0x000000000499b538 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x499b538)
#24 0x00000000041fefa9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x41fefa9)
#25 0x000000000418044e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x418044e)
#26 0x00000000042de12e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x42de12e)
#27 0x0000000000befa56 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbefa56)
#28 0x0000000000be731a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 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
#30 0x0000000003675f24 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3675f24)
#31 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
#32 0x0000000003fa4e05 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fa4e05)
#33 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)
#34 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)
#35 0x0000000000becefc clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbecefc)
#36 0x0000000000ae7091 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xae7091)
#37 0x00007fc4e3a70083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#38 0x0000000000be6dfe _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbe6dfe)
clang: error: clang frontend command failed with exit code 134 (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/eJzkWltv47aX_zTKC2FDou4PeXDseDpFiwkmadE3g6IomxuK1JJUxtlPvyAp2aLidDJbt1vgXzQTh5dzfud-SBMpRfeckNsgvQvSzQ3q9UHIWyw43zNGbypRv96uRdtRRiQgx44JSWQQr8BB604F8SqA2wBu96KuBNNLIfcB3P5PALfZA87uHx6O6TIIN0G4cv8-HQhoBGPiG-V70Emxl6gFQRaqFjG2xEEWAi3pfk-kAghgidQBUA4wQ3y_iArDcEIuyEL3P1CHYQSmACMNRnp28EXQGjRCgAAWlGtwDGA5LM_v3AcAkGrBi2BIU0bMwgDCAEJgZLU_EP4u7QAs7H5YBvHdSGXjoTIYDGCw-BL6SOywI7eVQugAbhl7aRedFP9F8Pin-UWrAG7XoiafCA_g9pEwgjUVfLP6NPvzrqesJnKJuy6IV2US5YaBldkSi1dBvLqwwU28UEX1Z84oJyvVBrDAgis92blGjN0hRQKYBXAN5tN3SFF8xwR-DuDKKmUFVkoRaZgZy67NBoko1583IIBREG_AmZ9jcVpiBHZjv_FnLr5xYNlmRv1bRBmpgRYGwwuRGrSkFfLVQbLbARY1GVaMQ7ReWlPmoLEEBn98-OV-9XgPVF-1VAMEqn4PJOmE1Gb_zLupPvTVEot2YiDfbFSpnqgAbgHiNaAcs94gOZDBhyuEn7VEmBgddpJ0UmCiFKmBEr10w2YnUkpgijSpgew5UFjSTg-QHzXCz6Du2-4UBuESgIchipDc9y3hWg3-JToDDA_BuzgFL9y6aEKjldRCy54_B3BbUT5Og8W-_oZks0jAYg8WJna2qOsM3V53vV4qsGiNEsBicSyyBVLtQr1yjY5BvKFcEwYWj2Cx2GO80EIwfECUB_HmT4GZxeUSLkOwaLBgQi5qivZcKE2xAouGi4VVpz_8JQRBvB70GN87zURLYEaJaIL4HnRIKiIB0oDwGogGNJQRtxAugfE6sCecSGT04cbjJQBfe85tokJKgQDm257bIAIPZuBXxNHe4M6B4KAVdW8zR-6BgflgveQCvT-KDGxWnxZBfL9ZfQKfjdP2jsMpYAfyzcjaMEjCRgjzweWuAMYhCI_h-F-cwyYpi0mUqlflPjxIyrV1pCfnjcV5kUTfdkJpSVA7BDvlOoCly4Z_0Z8CeBceB2Cn9GuQRzPkdZTiS8jXjCDed1_4I91zxAJY9NwWrxowYehfF6eB4eGEHs4sT1FegLXxxq8EixciXx2wnxCvmWFXDNrz1qwF1-Soh2Qd2p8Ti3hgkTc4IXGDcQJDsNtJorSQZCf1IKErDsci22XJglHeHxd73ruJTh8kQfVSiWVoZYmSBIaeJInHBhVNGFZAIqrIB-hjQzmzlJM4DCuPcupTzkiRlgBV4kPIJ5QhLNLSo5zNKecne3-YZg59mrlPM2-aOvsxmnHc1JlHs5h6SZKXsPC8-eNl-G0BdkVtiMxLBXhcsLpqLAxCeFKWvpQFjKL8w1Iaed4IaFLfRMCr4rfwzi0fjKPQx1-lRV1-GL-HfZqy_yb4Fp0H30uZSREXeV28A__zI2HT0Wm7NhGDMqr0jmpTAYUM4vV8qiYa0YESFzXZic7i9pZOlGF8VMve9jUNYsp-MD2prYmTMbvIjf3L4FRCsKtb0xnLsyacWRPFzXspY27Nlc0Mg0GVZ9FTq_L3eKWD6ckRz-SojGjfk0P2_Av_FeED5WSE7MnxZm4UZNkhqU2NK8Gc9NvqavAlU3wwhjDNsSGEuOCvregV4KglqrNtUem4_1Fkm9WnJ3ENzH8UmaEx0rsMMvVAVmGSRBF4l7JpQyeYLoL5U81doHcZV-Z1P2EFUTPNmNsHs3VsiH8Y0ZW6NgfLc8p8jruOow_g_tU2875Rh6HrY67jyMNczDDHaToNJEb2CL8O7fwZ_ee2O_vnP4PcAPOQe31BXKIYh_B7IXbfUr1SirQVe_2JsG60w3Q8gMV4c2I7HvxMeL06ZXalazfTc_rfPdl12q8Z5mDTfZNUk914vJlsqkmDemZqCiOafGdjfG-rQwkGEL9pejndwHCmiyREJZhIYeQbiHyxJ2pfyM35hHvP95Sf7l_OS34iqCbykSCJD19c_fN6xMnS4SLpO6uekNwT_Z1FvyC-v7Rkkum1pHz_lTT-8OiGqxnBN-acVnAte0VfyFfSrLl-mNn1pRmy35Yy8viqNGmH2v3_4RHXiyznLNPIgn7LV5Y4TpoLSlwLrvp2DCF3FH2SiCtmbzZ-43TmZqvHp-FIevUWwYH0pPBanZSgKIVeTDwgqcjq8cnH-EhaNDiZ68nG31dEO4Dx0MYznVdpXFwIqsFxXVAfCe41GX25uLZGDQQPo9fUJFFDGj_LbKWx7im6piCvDs9x9-ClPrwiTBLiq9AxNK064phc1uL78lzbZx1CTwSv80lgTSLoiTCAPUvyIjB6C_yNpNc-pjtkHnSv-Qkr0qA0AxhHuxZRv0VYSYleTcaO1_iA5PkmwaVTf2w8Ol1ZAofPE6CYCZDHEQKjwtfRk80CEzEeW8TY7wRrMbRDF6SZFStDY8iA3lGplvTl9KXKrLT7bU5T4ywp51-4jPe1O2m1amddxNmKYZZgxFiF8POu4Qbp2Vcc78Fv1tFatC3i9Tx4L1rvVMPcgRgxr3qdK_NQtSZFb7fDx2MUuT8qc6o0FY4aTFaL3mIzsNMSUa3G6Rk5xJiJA3t6H-fNktU5fVv3cTq3WwKYM9RWNQpgflYVLMbr3Z9FddEes8vvLE8bmEy_wbpwAetmvvb8ETXENpgfNd1VK73DOvX52X14U2Mce5X-P845ZkfWd73Av6BvUELC9F3FWauhNzVx1KaXumcbzYL3muM_WbryWpiJbFdyJSew50rxTCNpkdU_qpGfRaXeV8fPovqFeje33kHgTTo-eUCHqDG-_Yrk4xoc3ORv1qNRk6fHZKbHOi_f9azN5LPXGlzoCd7T_z-ox2smM6cYT3PprIBj0mCHcuxBRuQ2iayGFPD98nzFrsNg8kB7HV-ISB6WETBwr8fVEfW4zr-NCsMiBrsdo5XJtUjq3QTCR7_zSsIi9rjMO6qsbghw9K-pU0P2xPf06IVIKezjIffCoBl6eYAH_3QPNMA3qg-AHOnwnCOKEwOtVwQsXoAWQBEC6KTNLmePgaZvcdaW0wuRakhsl14PTWCOS0FULMNlaBj_2FuQ5Z5qgKo8zlGRlWVc4bxqSoirqqzTqEnypihgivIoj-OzadzNi1HNYNPePX-Z2HZ4PyUJqkEransZDTqh6NFN2YMFY6TeUPnXXoA4xY2PviTRveTE5BsQzhR3U9_GdRmX6IbcRlmZJ1kWptnN4TaCTZ00uC7Cui4JxiiKo6YiMI3KoqpxfUNvYQjjKIyyKIFhmi0bVNZFhWEMwwSiggRJSFpE2dIodynk_sY-sbnNShjBG4YqwpR9tQbh4HgwSDc38tYao-r3KkhCRpVWZwqaakZuT-74736mdNNLdvt_f4dk9fS_AQAA__-uHVFS">