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

    <tr>
        <th>Summary</th>
        <td>
            clang-17 crash on x86 with -fzero-call-used-regs=used-gpr
        </td>
    </tr>

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

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

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

<pre>
    I ran into a crash while building the Linux kernel with clang-17, version 17.0.6 (++20231208085813+6009708b4367-1~exp1~20231208085906.81), don't see this with clang-16 or clang-18. Reduced to a trivial testcase

```
extern struct { void (*cb)(void); } s;
void f(void) { s.cb(); }
```

```
% clang-17 -target x86_64-unknown-linux-gnu -O2 -fzero-call-used-regs=used-gpr -c test.c

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-17 -target x86_64-unknown-linux-gnu -O2 -fzero-call-used-regs=used-gpr -c channel_mgmt-0b2e67.c
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'channel_mgmt-0b2e67.c'.
4.      Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@f'
 #0 0x0000fffeefa88428 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xcc8428)
 #1 0x0000fffeefa866f0 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xcc66f0)
 #2 0x0000fffeef9dd65c (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xc1d65c)
 #3 0x0000fffef98607fc (linux-vdso.so.1+0x7fc)
 #4 0x0000fffeeff0f73c (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0x114f73c)
 #5 0x0000fffeefe08c04 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0x1048c04)
 #6 0x0000fffeefbc5068 llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xe05068)
 #7 0x0000fffeefbca744 llvm::FPPassManager::runOnModule(llvm::Module&) (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xe0a744)
 #8 0x0000fffeefbc55e0 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xe055e0)
 #9 0x0000fffef7792dbc 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-17/bin/../lib/libclang-cpp.so.17+0x1962dbc)
#10 0x0000fffef7a81ec8 (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x1c51ec8)
#11 0x0000fffef6864e60 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0xa34e60)
#12 0x0000fffef83e4adc clang::FrontendAction::Execute() (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x25b4adc)
#13 0x0000fffef8376020 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x2546020)
#14 0x0000fffef845ac5c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x262ac5c)
#15 0x0000aaab63651cc4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-17/bin/clang+0x11cc4)
#16 0x0000aaab6364fe20 (/usr/lib/llvm-17/bin/clang+0xfe20)
#17 0x0000fffef80923f8 (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x22623f8)
#18 0x0000fffeef9dd3d0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1+0xc1d3d0)
#19 0x0000fffef8091bb0 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-17/bin/../lib/libclang-cpp.so.17+0x2261bb0)
#20 0x0000fffef8061800 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x2231800)
#21 0x0000fffef8061a08 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&, bool) const (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x2231a08)
#22 0x0000fffef807920c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/usr/lib/llvm-17/bin/../lib/libclang-cpp.so.17+0x224920c)
#23 0x0000aaab6364f5a8 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-17/bin/clang+0xf5a8)
#24 0x0000aaab6365a468 main (/usr/lib/llvm-17/bin/clang+0x1a468)
#25 0x0000fffeee8d7780 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#26 0x0000fffeee8d7858 call_init ./csu/../csu/libc-start.c:128:20
#27 0x0000fffeee8d7858 __libc_start_main ./csu/../csu/libc-start.c:347:5
#28 0x0000aaab6364cbf0 _start (/usr/lib/llvm-17/bin/clang+0xcbf0)
clang-17: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Debian clang version 17.0.6 (++20231208085813+6009708b4367-1~exp1~20231208085906.81)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-17: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-17: note: diagnostic msg: /tmp/channel_mgmt-0b2e67-073631.c
clang-17: note: diagnostic msg: /tmp/channel_mgmt-0b2e67-073631.sh
clang-17: note: diagnostic msg: 

********************
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WVtz4ygW_jXkhbILIVmSH_LgOPF0ptKbVJKdfXQhdCSzLYMWUOLMw_z2LXSxjONsd3rdU9XVVuBwzsfHuXBhxohSAlyi2RWaXV-wxm6UvmRa5tlFpvK3y1usmcRCWoUZ5pqZDX7diApw1ogqF7LEdgP4Tshmh7-BllDhV2E3mFdMlpMgQXSJX0AboSQOkimZxhjRFNErRK8ooWFASUrSWRqEiF7FhMwTkmZRGCeT4C_Y1cFfB0JzEk_TANG5U5oriWhisQHAdiOMZzbGSg_f6RQ_Qt5wyHE7CavFi2AVtmAsZwYQuUZk0f8fk_5f-yfsLGiJjdUNtxglV_hFibybwIJnLZLUNbmv8Aqj5BobFF51o1vZYpRoFZipG5eOA04aPt1IZ3ta8cQyXYLFuzRex9Gkkd-kepWTyi3EpJQNntxTPCn-BK0mnFXVpDGQTzSUBoXX7XdZazzhLQ1Tfmj24e5m8XSDTZNthcUMZ02JNdRKW0fgxtraoHCB6ArRVSnspsmmXG0RXVXVy_AzqbX6N3CL6EoY04BBdIWZzLGQvGpyaL2mc6eM8W9WMw5uVWsNtVYcjIEcG9XortmNZMYoLpiFHOtGYsO1qO20g_xkGf-G82ZbO2RtE5kiMn_QqtRsi5kumy1I64D_Ag75hkkJ1Xpbbu2EZBTiZKA0cDBQuARVoPAG10wb0JhZDDLHqsCFqHoPpE5yqXLAJUjQzAolu57Q9Tw2Urpwq5kxGNFk1UjuRPCDa_jKJCtBI5pgJfFW5U0FTuo0Mpr0vEWnND9oVamyAURXN7VoP_GtNKBbc4jGeKXZFvBKSFaJPzugneFiAIVogiJSuJ_WEEY0JJjsCCGkKAqAgqVpRFPc-ky4QOHCvJnu40ELadsVfe7cIh2FNHtdK2M1sC2isXMNIW0bWy6mVo3RzgFFNrihS0CrTEhEV9Pp2CWyu7s_vk6CZGrUNED0iuw4d3hcXO4BB0eA47ggpwA_NvJJlJJVX5jMK9CmC_BzYHImPUzUwzTP83jGz2AocHo8Q-GBoWKexiQpWkNddLzkRo3Dk8IfG3kgC1Ik4RlABkHkFHmWZp4lICkn0cESfWV8IyQMseJCpfejRt7LodnzsLExPssaBiRyoDzUsYc64zMSH0bC6sEBHUL6b8YLxKHx4CZHcFkSRT8A92ubhTywQ9O5oDokHtT0mNkZHIZsBSXjb32aGUHfbutqD_yXAnZ4PMDzwzBLkjnNM95VqA7AzVbYK8a_gczvG1s3FtH0oPtasFIqYwU3N7IUEvqseCDyBVgO-gmY5pv72rmKwVxJY9-LuurzG8jvSD23VfM7QndMlqdERmqfrBayfITCbx4YXxwp7ElY9M5-OORWWt0Y8QKPUCylfbAahcux-6Xog34lKnh6Mxa2KLxxKozNu55Giv80sK6PRrpqU79qYWE91JyDQTkUrKnsOocKLHxnYHiDW6Of96Juu8LruvWjpEsq89g5yt6TXLEiniexNACenscYnzldnrHD0ljEaRxBTA5X68HtcxZPz763PsGW9X6QKVWNv-dhhYUOhofzsFwWaQgRy73wWmkl7ehWXcjtgDcWfrKInwJGZ5kz7CELfWRJTCjxY3Fbiwr0rTSWSQ4etiEK0o-n8nMp6zT6yIHz0Ece-mjG-MxPWx3OcRIvirP3mN9N0oX9mVDH1IHyUA-7BcZYFofxLOA8wpwH6y0Tft5faM3eXG4Kl3zD9JDCFn3i8NvcEbc94v0g-I6AbkvDeeRBjH2IUQGUfEqlG-BpTLylInMaFufJC5TGTpdnLD3enob5Yf1duhPfI3D1Avpt6fx1Z8c9NCugevOWYThPrHW7FOPpe_6TyfTUzjfMfcLmR4QFWeZFZq7Fy7DRWS6DpdpumcyPc8dJX9rXDtWWRlZ5VWOsiEO1OKg26zXf7YKg-yNjRnBXWoQD1bqoJ-wa1lYz4U68XfeROlZVLiKVHvs7k4sxK7fu3Hr5ufzFUXnINSU-13GQko-5bpMFe5eohwXwMsvRQCfw0Vblf4guvGp1XjJCN1ePjOCYDEbSz5Lxu8rMx0z8rrI7YexHO7Itq6o_gFvV74hHf62ZcJ7SHrZ_nLzBp34hh4x4CYj6BZ8kc0r4R3ivD769gnWiUn3E_d_J4ZkKI40cKR5r4XHVmbHe84bSOKBuM82iTxPjtJ-Vqvp8fuBcnyuGzqiHKjoq1yyKU-zwfK7GumGeXu_SANI8SVKC12vH19pYpu2as6pqZ44dndw0A7PmzeRQG0RXsrZVT_LxoOkGhYskQuEiHI3Gx0bTWYrbIUIKe2yn-3TKJ63yKUfhIqApCheUjEqTU0q9mZyaxEnlYZSgcDEbdadHPsGzguBO66f4d-P29O-fBcIFBq1d-ekvZHHR718x70OgYKKCvLvXh51wjpUDDsLWqxoDePKCrWofAMTB_rK3dA2ZYLLXff4XiNZGdxJ2U_joCrmX22hgOd6qHConXSsjdl1Xu_OtKsivRcvFnlZH4zvKpHIHzQXO98d-vDVlO65ft__j3_sngMXz82L5BT9_ucGr-7u7-3_d_uM3vLq9u3nCz_dt89U_f8OPNw_3j8_7i_eHU1f4qXHZ4MNr_L2ABtzuSyDHzO5V_iAFdGW3tfO995feE5KEcRgMt_LnU2g2P7FK51or_33oIr8M83k4ZxdwGSSEhsl8HswvNpcsh1kUJTTllHMIZ0HAY8YDFqVxEhYwuxCXnY8HNAiCNJxPE8aCOCooTfKMzQigiMCWiWrqwnyqdHnRvupcJrMgTi8qlkFl2jdESiW84rYTUYpm1xf6sk0NWVMaFJFKGGtGLVbYCi73DzLdg5CSLpy6uP_e68tFo6vLn3-SavH_NwAA__-4w5VI">