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

    <tr>
        <th>Summary</th>
        <td>
            Segfault when compiling weird code
        </td>
    </tr>

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

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

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

<pre>
    The following file causes a segfault when compiled with clang 18.1.1:

```c
int b();
int main() { return b(b); }
int b(int (*f)()){
  return 0;
}
```

```
clang.c:2:22: warning: passing arguments to 'b' without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
    2 | int main() { return b(b); }
      |                      ^
clang.c:1:5: warning: a function declaration without a prototype is deprecated in all versions of C and is treated as a zero-parameter prototype in C23, conflicting with a subsequent definition [-Wdeprecated-non-prototype]
    1 | int b();
      | ^
clang.c:3:5: note: conflicting prototype is here
    3 | int b(int (*f)()){
      |     ^
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: /usr/bin/clang-18 -cc1 -triple x86_64-redhat-linux-gnu -emit-obj -mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name clang.c -mrelocation-model static -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/tmp -fcoverage-compilation-dir=/tmp -resource-dir /usr/bin/../lib/clang/18 -internal-isystem /usr/bin/../lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/clang-d07602.o -x c clang.c
1.      <eof> parser at end of file
2. clang.c:3:5: LLVM IR generation of declaration 'b'
3. clang.c:3:5: Generating code for declaration 'b'
 #0 0x00007f398960440a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib64/libLLVM.so.18.1+0x60440a)
 #1 0x00007f3989601bf4 llvm::sys::RunSignalHandlers() (/lib64/libLLVM.so.18.1+0x601bf4)
 #2 0x00007f3989604b6b (/lib64/libLLVM.so.18.1+0x604b6b)
 #3 0x00007f3988a53710 __restore_rt (/lib64/libc.so.6+0x40710)
 #4 0x00007f3991e9cdcc (/lib64/libclang-cpp.so.18.1+0x1c9cdcc)
 #5 0x00007f3991e8a866 clang::CodeGen::CodeGenModule::GetOrCreateLLVMFunction(llvm::StringRef, llvm::Type*, clang::GlobalDecl, bool, bool, bool, llvm::AttributeList, clang::CodeGen::ForDefinition_t) (/lib64/libclang-cpp.so.18.1+0x1c8a866)
 #6 0x00007f3991e9175a clang::CodeGen::CodeGenModule::GetAddrOfFunction(clang::GlobalDecl, llvm::Type*, bool, bool, clang::CodeGen::ForDefinition_t) (/lib64/libclang-cpp.so.18.1+0x1c9175a)
 #7 0x00007f3991e8f5be clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/lib64/libclang-cpp.so.18.1+0x1c8f5be)
 #8 0x00007f3991e87975 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/lib64/libclang-cpp.so.18.1+0x1c87975)
 #9 0x00007f3991e8c38d clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/lib64/libclang-cpp.so.18.1+0x1c8c38d)
#10 0x00007f3991e864c6 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (/lib64/libclang-cpp.so.18.1+0x1c864c6)
#11 0x00007f3991f3a85c (/lib64/libclang-cpp.so.18.1+0x1d3a85c)
#12 0x00007f3991e59042 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/lib64/libclang-cpp.so.18.1+0x1c59042)
#13 0x00007f399077444a clang::ParseAST(clang::Sema&, bool, bool) (/lib64/libclang-cpp.so.18.1+0x57444a)
#14 0x00007f3992a1c896 clang::FrontendAction::Execute() (/lib64/libclang-cpp.so.18.1+0x281c896)
#15 0x00007f39929945a0 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/lib64/libclang-cpp.so.18.1+0x27945a0)
#16 0x00007f3992a99df5 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/lib64/libclang-cpp.so.18.1+0x2899df5)
#17 0x00000000004144c6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-18+0x4144c6)
#18 0x0000000000411164 (/usr/bin/clang-18+0x411164)
#19 0x000000000040fea8 clang_main(int, char**, llvm::ToolContext const&) (/usr/bin/clang-18+0x40fea8)
#20 0x000000000041dcba main (/usr/bin/clang-18+0x41dcba)
#21 0x00007f3988a3d088 __libc_start_call_main (/lib64/libc.so.6+0x2a088)
#22 0x00007f3988a3d14b __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2a14b)
#23 0x000000000040d8a5 _start (/usr/bin/clang-18+0x40d8a5)
clang: error: unable to execute command: Segmentation fault (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 18.1.1 (Fedora 18.1.1-1.fc40)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Configuration file: /etc/clang/clang.cfg
clang: note: diagnostic msg: 
********************

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

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

`/tmp/clang-c82ad8.c`:

```c
# 1 "<built-in>"
# 1 "clang.c"
int b();
int main() { return b(b); }
int b(int (*f)()){
  return 0;
}
```

`/tmp/clang-c82ad8.sh`:

```sh
# Crash reproducer for clang version 18.1.1 (Fedora 18.1.1-1.fc40)
# Driver args: "--gcc-triple=x86_64-redhat-linux" "clang.c"
# Original command: "/usr/bin/clang-18" "-cc1" "-triple" "x86_64-redhat-linux-gnu" "-emit-obj" "-mrelax-all" "-dumpdir" "a-" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "clang.c" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-fdebug-compilation-dir=/tmp" "-fcoverage-compilation-dir=/tmp" "-resource-dir" "/usr/bin/../lib/clang/18" "-internal-isystem" "/usr/bin/../lib/clang/18/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../x86_64-redhat-linux/include" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf" "-fcolor-diagnostics" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "/tmp/clang-d07602.o" "-x" "c" "clang.c"
 "/usr/bin/clang-18" "-cc1" "-triple" "x86_64-redhat-linux-gnu" "-emit-obj" "-mrelax-all" "-dumpdir" "a-" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "clang.c" "-mrelocation-model" "static" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-fdebug-compilation-dir=/tmp" "-fcoverage-compilation-dir=/tmp" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf" "-fcolor-diagnostics" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c" "clang-c82ad8.c"
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1z46jS_jXKDYVLQrItX-TCsePMVGXfTE3y7l66ELRkdmTwAZRk9tefAn3YUuSJM7vn1J6qTc3YErS6n26aBj2YGiMKCXAdTG-C6fqKVnan9PWeaiXhD7jKFP9-_bQDlKuyVC9CFigXJSBGKwMGUWSgyGlVWvSyA4mY2h9ECRy9CLtDrKSyQFE6iSZREC-DcB2E7ecsrP-x-l5Ii7KApAFZBPHNsW1PhaybUTC_QRpspaWXzGpRFMzXfRXu2z-yzJ1IrZMsgnmjFrVaws5Sp6ODNYq1vvVeTVgQL4n77z7QC9VSyMJdHlxIZYGoLqo9SGuQVSgg8ywgcx8WVVlE0UErq-z3AyBhEIeDBkYtcCQkomWJnkEboaRBKkcrRCV3YlJZZKrDQelGckViFExv8G9HBVgqiTvlwXTdOo0QQcF8hT4YVeT_3IOjf8H0dhgVN9TTQVAoyivJrFAScWAl1dRf_7lwWA1ehro8_AO0wgeq6R4s6FN9PkwBWSGmZF4KZt3o-PykyFSZgX9VIC3ikAspPKzLQxp1IR0m7zFuIyGK2xBJZcF9n0LrhWIHGo4K45659xP9dOg6GF_ub5ePt871vXChz6oCaXBJ5TJ1Z-3BuMlKNgHZFMLuqmzC1D4gm7J8br9cOH4HZgOyEcZUYAKyqYdFsrLigOwOENPU7FBG2TerKQM3BAcNB60YGAMcGVXputk9SY1RTPgB1ZVEhmlxsJMa8qOl7Bvi1f7QlZFwgr5oVWi6P840F8mAbCqjA7LJXIpvfMxxlCLMWISw1eJQAnpNZ9tZgjXwHbW4FLJ6xYWsEIa9sFhlvyO811DSV-ySDzvDXGhEMcJcGJqVgHMNgDArgWpMjcUZ5EoDdt6C5Ec5H61n0CIXoH0zo5rjZ1pWgCXdg0HYTUfsyqpvQE2e1BgU81MF7xWHEhlLrXA9uUt0fFBCWtBBvPY48z21OwxaS4Vwnh8wU9KF3gbxWkmEc6mwVpXkQhbYySK8Z0oaqytmlca0FNRVdZxX8kVIjq1zwQTxmiBsqS7AYnaoXPjwLEHYVhJ8QwEStMPFIauKArTr8lN_XfAM4dy343p1qP3hwsEOyMbuDwjnTD2DpgX8QEZDnTCueTjMk4lLTJG1Ix6QjRtzHx1JSyzMd2Nhf9FjLqebLP6BAjcw5WWib2wVjAVkM5KEzn7Syg4-xsXfmodXd8FOYVwkVGPtRHPQWmlcClckogXCeSErhptCHMTrZEImEcK5-SYOWHGN2Q7YNywkLva5H9FSacwFLaQyVjCXVpRzbUSB8Hq7vVuttp-Wv95u178tv27IdrX5vF0-_hLE6whht2K6Ue9mMA_ns5BMFMKviLUzpK4E0aQpdPEKVB7Et-hAtQGNqEVuKqrcb1lqYTJBI2X4_v7XX9Dnr3Ue10uTynsrVbOA10riUSV3zcOyQExxt2PS51WggMQhCl_DMAznebxIF7MwSUKKfJGNl0G8NN9NffFFC2l9CXyq62h6FNL0ZauMWwn3AZm5Wiqk9eu6Ww5cvs2S-tv5ODFq4rZjAbkJX2uDbsHoEEUDRFGWJ2OIvlbyURSSlp-o5CVo024mLjDqdPaMkmEYsll2GfxslvU0xaeaUjqN51GItlsNxioNW23fqmVO58wrTMJ5FPb0JSf6FhEsGGdsRIVPUHY49OBFzIv39E37-lKazmZ1JtVhXSkOdyB7N78oXpVQN92BfdArv-tx4dg0W6peQjxaLWTxFXKXC8fmJ7dzIUu_DToavCtVRss1sNJ1ZEqNfh-1LK3VIqss3AtjB7p64DdKr7v91HY8Ic_FzYelF7fZYByi-ZR-MG5LzvVDfhKxs1EYjdkwJP8Jv71bPb_ng3zJpxl8xO_bvbC1c63jR3CXhaBu_9VtVnwkPjKMDm3PnXTgznwxn_6cO_9NNxzKnhuLgRssTvnPuXEe_EcAOvsdQFfEwwHAWcI-VGYcwCd1uIdnaOCcwqxbPhhEB6GHMephzGOaTi8vrdyL9_SRvs_TRZiQU59v6n35SklT7d2O2TXWq9ePXb3Tqjr4cvoBf735Hr7TpWkRzudJkvRK2Be3ZVk-PvUBPMKeNst6vwJdjGXqLfWg9FY1QiOWLnrpsdFKWpB8WZfKOiVegVUWzi3z47ZJ6nX3jPeWQLJYJFMa9nPTE0j6szSWSgY988uR4j1A64J1OcC5t98DOOtHZ7Hgea9INVCOOJ-bN7Q-rDd-fGjGkNTb7QFrF4P6L4kSP6tZtG3InJNVWmv63aVsvGI7qpF_xXMA4lu_dvXayAo9K8F7-MZeoOstkrfag5UOYEXRLHlfjZPqqVn01YQ50LQOe-uf39fW6D3Y5WCxVqpcuVR4ta1zs0s88pZOoZBw4BFnGfWM2ftuOdGerqi_I415mKZou3UDvzWWartltCy3J9rH96aEhmkfJRlqjpKsr9nHLQnv7j_frLZkQibTd0xESdYzEQ_GhKd0imrl74fVCXfa2omB_Eulu6gkzUpAViGoJxRiar-nkrvORyj2IG392lSzy252KQ2eAwL-A8U155w3VaHVinLqaWleeZvGv7w4pZUBhJ99GwASJ7P51ELLPzZctntwA1xp2jTgaJKz5FhInjxX4uCcYZoasZ0GypGndjx1rIx4rbt83ShL4Guh39BaXmKlZC6Kqnm59G-4tRxYdsJnNC-qeTEIWMs8Hl_Q0d74njYB_sS_E_K8YRuXT0_L1Sf09OkWbR7u7x9--_x_d2jz-f72ET09-Oab_79DX2-_PHx96ji-L2NsYWrctD7LGHYCGpAnz4AjajuVl_jfZx5YSihPW7Lhp583u48OwF81DOeONM64OQvfOaoJSIzcFCBBvMoqUVospF9ayKC_5Ujajr_7Gc-5cTsfkXZQncsrz3b7jOUVA-35n5-qHk7bWotn0IjqomG1CcYFYw2BHcTrUTqQjIXdqXvQohCu5J1UWSdwroR7RZixqL1s7NZ354paI9uS6O39kUpvWxpCvbmluGs_Idc7EGco9uEzPaL9pHNIt3eoeqT7m9h1yHsEfNNR0_Cd1AgZ3_adUPJd05CY7zqG9HxnYISk7x56Q9V3Q9YR9sdhw27hb7ob8r65byj8LnBjRH5n88d0fif2LqnfSp5S-03bZUx9_fiQev-QipbyvlTZgPj_aQx__SHAGygDlv8I6cMP9A4HuvE9OSJo2qJF1zl2XNB1jh4anOTN4Oig62kOENr7Hx8jtFLq6MfYkUIr1tXPM3X0n4L5T8H8uxTM_5WpNzqnjnvNbovSbqiu-HXMF_GCXsF1NI9ikkaLML7aXafJnCTpIgspMDaf0inhPGEJkCjkM0KnV-KahCQJk2gWTeOUkAmjMwoA8YKHi8UsIUESwp6KcuLyfqJ0ceV_uXCdpotoflXSDErjfwVFiIQX5DsdwOn6Sl_7uZJVhQmSsBTGmqMWK2wJ148jP4PyvzMBobk_D7yqdHn987-u8DD_HQAA__8jQCvF">