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

    <tr>
        <th>Summary</th>
        <td>
            Clang-18 crash: error in backend: Cannot pop empty stack!
        </td>
    </tr>

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

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

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

<pre>
    Clang-18 crashes on the test case.
Compiler explorer: https://godbolt.org/z/8bTYeKP7G
```
$cat mutant.c
#define X2(n) X1(n##0) X1(n##1)
#define X4(n) X2(n##0) X2(n##1)
#define X8(n) X4(n##0) X4(n##1)

#ifndef __SPE__
#define FLOAT_REG_CONSTRAINT "f"
#else
#define FLOAT_REG_CONSTRAINT "r"
#endif

#ifndef __NO_FPRS__
__attribute__((noinline)) void
f (void)
{
  int mem;
#undef X1
#define X1(n) int gpr##n = 0;
  X8(a) X8(b) X8(c)
#undef X1
#define X1(n) double fpr##n = 0.0;
  X4(d)
#undef X1
#define X1(n) "+r" (gpr##n),
  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
#undef X1
#define X1(n) "r" (gpr##n),
  asm volatile ("" : : X8(a) "m" (mem) : "memory");
  asm volatile ("" : : X8(b) "m" (mem) : "memory");
  asm volatile ("" : : X8(c) "m" (mem) : "memory");
#undef X1
#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
 asm volatile ("" : : X4(d) "m" (mem) : "memory");
}
#endif

int
main ()
{
#ifndef __NO_FPRS__
  f ();
#endif
  return 0;
}

$clang-18 -c mutant.c
fatal error: error in backend: Cannot pop empty stack!
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: clang-18 -c mutant.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'mutant.c'.
4.      Running pass 'X86 FP Stackifier' on function '@f'
 #0 0x00007faa8c035266 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd2b266)
 #1 0x00007faa8c033170 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd29170)
 #2 0x00007faa8c0348c4 llvm::sys::CleanupOnSignal(unsigned long) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd2a8c4)
 #3 0x00007faa8bf829ae (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc789ae)
 #4 0x00007faa8bf8296b (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc7896b)
 #5 0x00007faa8c02fa67 llvm::sys::Process::Exit(int, bool) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd25a67)
 #6 0x000055a3fcc42c23 (/usr/lib/llvm-18/bin/clang+0x13c23)
 #7 0x00007faa8bf90c4f llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc86c4f)
 #8 0x00007faa8bf90b26 (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc86b26)
 #9 0x00007faa8ebfa494 (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x38f0494)
#10 0x00007faa8ebf8cba (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x38eecba)
#11 0x00007faa8ebf7bbc (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x38edbbc)
#12 0x00007faa8c3e9552 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x10df552)
#13 0x00007faa8c17b0df llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xe710df)
#14 0x00007faa8c180dc3 llvm::FPPassManager::runOnModule(llvm::Module&) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xe76dc3)
#15 0x00007faa8c17b7d4 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xe717d4)
#16 0x00007faa9481809f 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>>) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1ade09f)
#17 0x00007faa94bae5fe (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e745fe)
#18 0x00007faa937ca866 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0xa90866)
#19 0x00007faa95622645 clang::FrontendAction::Execute() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x28e8645)
#20 0x00007faa955a0cc4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x2866cc4)
#21 0x00007faa9569d1c0 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x29631c0)
#22 0x000055a3fcc42837 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x13837)
#23 0x000055a3fcc3f905 (/usr/lib/llvm-18/bin/clang+0x10905)
#24 0x00007faa95238909 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24fe909)
#25 0x00007faa8bf8294c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc7894c)
#26 0x00007faa952382ae clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24fe2ae)
#27 0x00007faa952000f1 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24c60f1)
#28 0x00007faa9520033e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24c633e)
#29 0x00007faa9521c39c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24e239c)
#30 0x000055a3fcc3f25c clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0x1025c)
#31 0x000055a3fcc4cf32 main (/usr/lib/llvm-18/bin/clang+0x1df32)
#32 0x00007faa8a519c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#33 0x000055a3fcc3c1ea _start (/usr/lib/llvm-18/bin/clang+0xd1ea)
clang-18: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Ubuntu clang version 18.0.0 (++20231018091808+48a53509e851-1~exp1~20231018091910.1571)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-18: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-18: note: diagnostic msg: /tmp/mutant-70a534.c
clang-18: note: diagnostic msg: /tmp/mutant-70a534.sh
clang-18: note: diagnostic msg: 

********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Wktz27iy_jX0BmUVCPC58EKWrSRzndhle-bm3o0KBJsyzpAgDwA69lnMbz8FPiRClsaPKJNyyiSA7v7wodHdIMy0FmsJcOaF5154ccJa81CrM8EqJmv5XNWt5vokq_Pns0XJ5PrUTxBXTD-ARrVE5gGQAW0QZxpmHr7w8HxRV40oQSF4aspagfLoHD0Y02iPzj2y9MhyXedZXZpZrdYeWf7HI8sku_8_-J-b-FOvw4vw8NO_koAzg6rWMGlmfGykORRCAvpOPJJIj6Tou98_UY9QvNvgeyR9IRpsRMmuKHlFNNmIBruiwV7RUYEoZA4FWq3ubi5Xq129y6vr-f3q9vLTanH97e7-dv7l2z3yCCk8QjZjodTwVkHlCMpcFIfwfLteLW9u70ZMqxUzRomsNbBaeaSbby1kKSTYSZEUPdYi78cWyCNJ97qZbnzePyAkpEEVVB4939hsO5Pf_Res-iOrVmjdqJ5FiTx6gfBGA-rpZx3b9inbPPHpWr1uJq_brARU7FiaObbseubv02tJJ-eWe8vMdiIdc4tRM9MVeqxLZkQJqKOYdBJ0PpmgbaQX1aDKEmkb6bz_T0gFVa2eO9F0gvo13dkv1M0_rPsd5FrFB5w-KT5A-LjKvxb4T7jEC7fYB_Eja_bCJ46umL9f8ZsIfef6vwZ16gLvgRpfHI6wQpr-oWJC9kZ3Q-TfBGGEilFmQszECEIKTKvkJDpu4WzS55i8T_lOGi2YYSUCpeouUXcPSEiUMf4nyNy2LZiUtUFN3SCoGvOMtGH8T48My3JzdTm_u0S6zSphEENZu0YKmloZZOrdzC_MQ5vNeF15ZFmWj-Ov00bV_wJuPLIUWregPbJETOZISF62OXSVRld4dMCMYhw8skCNgkbVHLSGHOm6VX2zlWRa11wwAzlSrUSaK9GYoUa5sxNAeVs1FlnXhGeo-3ej6rViFWJq3VYgjcWODtPnD2IeXUBdePQSNUxpUIgZBDJHdYEKUQ65mgyDF3UOaA0SFDOiln0nHTpvWymFXKOGaY08Ei9bye0odGMbvjLJ1qA8Etv6q6rztnPkeIOKxMMcgwP6vicRWt6gjgJRiI2uYrTjkdgLcGF_9Q5myxqEnzDGOC4YSzimIYki1K0fnXt0rp91_3CjhDSd6vt-iZLtIMV-rGptFLDKI5FdJrszur2WeGTZamWdQWSjS_i2NRPSI8vZbNslsqurP76e-slM1zPfI-f4KScZiaLNtrKA_R3A1I_xPsC3rbwTa8nKz0zmJSjd77VjYEr9GDuYyA6mIOHBPkyLEphsm-sBmUeSVnZleo7KWq6PBI8lPHDg0Sm8rEhIyuDnDfE4SRk4hoIXhqLsOIaizDEUuoSTgkXxfq_tQkj_cvkkjEeSzjcXKKvr8kiEhyyKHXjRAC8MGS04Dwgn9A2GumDU6fQptzluojJ2qU0xD4rJjPuwvOpi_qqP-dMdev_DJldeS22GHXq06fMk4kHhYE12sWYkOoqhjLixIJ0agqxgQRr8vCGaFDhIg-mpwMc7lhKesWNYAuAZcyz5O5biLONHsZRnmXOC8t2oRSENQzJxqa-MPwgJY5aySWrwtVZey7HZcbNtY3QU3_JxXoQhcVA7wYz7cYbz6UZY3ligYzL9h_FCbBE7cAMXboJzTt8A92uX_x2wY9OxoEY5pw7UcJfZOJ9msRLWjD8PcXUL-kvVlBvgvxSwH-fupowmgNMg8ROcFn1FNwT8Spjzvtq9bk3T2ug_6b4QbC1rbQTXl3LdffvoQuNkyGdgOag7YIo_XDfWVbQTRSdDben3CeQro-6ZWoN5ZdAVk-t9Q7bU3hkl5PoWCrd5ZHy-o3AgYT44-1TkizSq1eIRbqFYSHNjlEcX2-7HYtj0S1HC3bM2UHn00qrQJu97Win-3cKq2ZG0RWHzQwkDq7E0nAjlULC2NKscSjDwiiC97Gy-34n66p43TedGSR9TWA44dTdp7DhSxiAs3l8g7TUGcRAW4BibZseUxpwlUTRdrBt7zJjf3bvOegcVc1L3x1P4PqAsxcmk0LY4p8k1DSNCoiCc4lyqWpqtVw0lFvDWwAdL7X3ASAJJFIRTZAQ7yEKGOQ_crdh_qP4itWGSg4Nt3ATJ4al8LGLtRx9FnDtRi_gur2nuc-xErR7ndhKPNWcvMb-YpN31R0KdRtTn2EFNdkvahMaIc39VMeGG_blS7NmGJrrgD0yNEWw-xA23jSz6T81vBT8tkRMaOxCpC5EWKQ7fpxKn2PW0wFkrQpMUH4nioIAUp46x8MXpKeCTSL1QTD_cAq8fQT0vrMM-me1RlxVQPjvrMB77V6pbC0vz5nvTh6Lp3oNZ4NSUJNoljDCYOneuxONY6CwW_qKuKibz3eCx15k2uaPuUiMrnayxzYhDtpgkm9WKPz35fv-SMS24zSzCYupc1BlsG1ZGMWH02L2jjpWl3ZG1mvTbIfNtUO68uXPyo3kLYU4aIbHLNMa48A8y3cUK9iJOj_Q7gWVH0A44VKj8zdD5zjnzmGTwCBfOxR1Jdsmg9LDbHSDjtzrTh5n4rc6uhDaH6rGKleUfwE091MNbb22YsI4yfHV4K3mDS_1CCil1_clN98TnNOWH4F5Mnp10tSdPHaL-H6TwWCEbCE2dcLf5erpJOSQcSBvz4gi6CzPzIUhMPszUdTnE8olrvTMTYhK6sPydZM0LStD2kuKtevOCOmdv9zsnC_2UJzFarSxhK22YMqvByDJrRZl7ZLm2faeLP3778f_Z5pXMSGwt6XYkvn_sOjs9M-7ROQ0Cj87x1vxuguc-MNQbftfEch-231zGG4DNHcnmWgAVQ1mI-OBbBRMl5OiHMA8InoRdshxQjK31VgM6fUSmRhoAiUnVNhj6PWulaQfVj6C0qCXykxme4R79uUfOCSbUx_Yk6yfYtgUJC2mIU0hC_9T_C54a_6_JoNTHMz-Mt9GwP2DaOTwl0SoKTht-WgrZPp2uZTsMeVDAclTVOdiTO2pqLZ76rq6YLEvIL4Tqr8UGSi2FL-iStT26zVG-OUijSq87uWHNfuJncs013EPN7-_ni8_o_vMlWl5fXV3_75dvn9Dyy9XlHbq_7prPf_-Ebi9vrm_vN7c_N_vukRJt99jBu6TNAAWoS_WQI2Y2Kt9IAVmaqvHIsr_AOY0xC2kw3i79lA798IG1ONaKjH_Ac5Kf0TylKTuBMz_GhEQ0CunJw1nKktiPkswvIE5CzrIwCziN_TDBDOLEPxFnnQMT38cU45DMQkr9NEpCEkQQsTD2AgwVE-XMbuFZrdYn3dXhWRxiPz0pWQal7v6uiRAJP1DX6RHihRcn6qzb9lm71l6AS6GN3moxwpSw8-dO774aPWlVefbxu89uDv8NAAD__1Cyr4s">