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

    <tr>
        <th>Summary</th>
        <td>
            Clang-18 crash when compiled with -fsanitize=dataflow -fwhole-program-vtables -flto -c
        </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 with -fsanitize=dataflow -fwhole-program-vtables -flto -c crashes on the test case.
Compiler explorer: https://gcc.godbolt.org/z/vf5rGThx5
```
$cat mutant.c
typedef struct FILE { int i; } FILE;
#ifdef __cplusplus
extern "C"
#endif
int fprintf (FILE *, const char *, ...);

int
main ()
{
  ((void (*)()) fprintf) ();
  return 0;
}

$clang-18 -fsanitize=dataflow -fwhole-program-vtables -flto -c mutant.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-18 -fsanitize=dataflow -fwhole-program-vtables -flto -c mutant.c
1.      <eof> parser at end of file
2.      Optimizer
 #0 0x00007f18cec7e266 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd2b266)
 #1 0x00007f18cec7c170 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd29170)
 #2 0x00007f18cec7d8c4 llvm::sys::CleanupOnSignal(unsigned long) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xd2a8c4)
 #3 0x00007f18cebcbbb0 (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc78bb0)
 #4 0x00007f18d975f980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f18cf707846 (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x17b4846)
 #6 0x00007f18cf7071fc (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x17b41fc)
 #7 0x00007f18cf6e796e (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x179496e)
 #8 0x00007f18cf6e1942 llvm::BitcodeWriter::writeModule(llvm::Module const&, bool, llvm::ModuleSummaryIndex const*, bool, std::array<unsigned int, 5ul>*) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x178e942)
 #9 0x00007f18cf6ebe35 llvm::WriteBitcodeToFile(llvm::Module const&, llvm::raw_ostream&, bool, llvm::ModuleSummaryIndex const*, bool, std::array<unsigned int, 5ul>*) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x1798e35)
#10 0x00007f18cf70b999 llvm::BitcodeWriterPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0x17b8999)
#11 0x00007f18d747326d (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1af026d)
#12 0x00007f18cedf8864 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xea5864)
#13 0x00007f18d7467d43 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1ae4d43)
#14 0x00007f18d7460d52 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+0x1addd52)
#15 0x00007f18d77f75fe (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x1e745fe)
#16 0x00007f18d6413866 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0xa90866)
#17 0x00007f18d826b645 clang::FrontendAction::Execute() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x28e8645)
#18 0x00007f18d81e9cc4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x2866cc4)
#19 0x00007f18d82e61c0 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x29631c0)
#20 0x000056146e380837 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x13837)
#21 0x000056146e37d905 (/usr/lib/llvm-18/bin/clang+0x10905)
#22 0x00007f18d7e81909 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18+0x24fe909)
#23 0x00007f18cebcb94c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libLLVM-18.so.1+0xc7894c)
#24 0x00007f18d7e812ae 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)
#25 0x00007f18d7e490f1 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)
#26 0x00007f18d7e4933e 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)
#27 0x00007f18d7e6539c 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)
#28 0x000056146e37d25c clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0x1025c)
#29 0x000056146e38af32 main (/usr/lib/llvm-18/bin/clang+0x1df32)
#30 0x00007f18cd162c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#31 0x000056146e37a1ea _start (/usr/lib/llvm-18/bin/clang+0xd1ea)
clang-18: error: clang frontend command failed with exit code 139 (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-39b2dc.c
clang-18: note: diagnostic msg: /tmp/mutant-39b2dc.sh
clang-18: note: diagnostic msg: 

********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWV1z6yjS_jXKDWWXQN8XuXCc-JwzlXmTSjIzVe-NC0HLZkcGLaDEmYv57VtIsi0c53zkeLd2U05ZhobufnjobgE1RqwkwGWQXAXJ9QVt7VrpS0E3VCr5ulGtYeaiVPz1cl5TuZrgHL0Iu0aTylAprPgLguiaU0urWr2gSfWyVjVMGq1Wmm4mz5aWNRg0qWqr0IQhpqlZg0FKIrsGZMFYxKiBaRBeB-FsrjaNqEEj2Da10qCDaIbW1jYmiGYBWQRksWJsulK8VLWdKr0KyOKvgCyeq0R_elpvk36eIA2HT_-TxIxatGktlXbK-kb72gCHChmrW2bR4svtDQqyKySkRSKIrlCQXXetQXS1myYSlRuyXLKmbo3773tga0FLFBAyDwjZS4Pkoup_uVmrRgtpKxSQvNdGZgGZI6akQ2FN9a5lOp0GpDjo3c3QP2yocKpyJ9L3Z4Mg6pvzZyV4_zhzQr0oKXYGuMehMdqP1GBbLVF40Jpdj9U7DHcM-ODi-_jf397MHm-QacuNsIiisl0hDY3SFll1vOjCrttyytQmIIu6ft59OV3_AGYDshDGtGACskBUciQkq1sOHck6zqGSsj-tpgwcwI2GRisGxgBHRrW6b3YjqTGKCWqBI91KZJgWjR3o-Wgp-xPxdtM4y7qmcIrue38R1at2A9I6s9F5scJT1P0F0RxUFUQ3qKHagEbUIpAcqQpVooZemAzCd40VG_EX6GGJAxKFKNyGYRhmFc4ZsAxImqIOz2gWRDPzavqHe8eTztunHrL8IKTpy1IZq4FuApI62Bwzd5RatEa7xRHlbomway2FDMjC0XrXJcrb299_neB8atQUB-Qq3HJSkjTd09oZjI8MZjgLTxn80MpHsZK0_kwlr0Gbnt_nsKnAWejZRI5s4jmLT9k0r4HKtrkbLAtI3sou2nJUK7k6k3k0Z7FnXuSZV7KyLMOfV8SyvCx9HOKRIl5kSVXkIVouNRirNCy1HbT2k27zdJnGk1rIdjtZybbvaOxaA-VOT9jpwaTIfTXJ2J8qC7M8Tn_eH5yVcR77ZEuPNeGKnUcTrpinKfM0pZAVKZxDUxEXKXia8iNNuIjJiKxXwjLF4Q8tbJdsg2j24p5_Vbyt_X3fN_XZatj4pVK1-z4Wemw3G6pfv0gO292A2XiAsbyXp1rT1yCa73dGF0vmKGnrILrp89c5gMmhiIkHTHEETAlRMnKkQ2RA50ktxLfB-FqE_N8BqsghSg6VBYlweLQryqIo3mPQPTVD8NOtPAHYG6hmktavRphfqaQrx8D5myHOu_RM3pV5URSed-MEw7M4i0jKf1hTn-xZ03S68l4ZrUKSck-Znzl4lefpOHM49L4CxAeAc5__1tUAmuRp7OET-YuRZjyOzrQYEPM48pTFR8pCnpC-bOsdvtkIe0XZnyD5XWub1gYkH3VfC7qSyljBzI1cCblDcyTyGSgH_QhUs7UrxpQ0XsQYic4Vh08gvyH1RPUK7DeEbqlcnRI5LOWj1UKuHqA6FZJ2LyWHCQcQZszN6Q_5Iq1ujXiGB6jm0t5bnzPP1RANXPx8fDUWNh2BRnGtleKfLSybo5EuhDZdJlruAuloEIeKtrVdcqjBwjcG9tvgA4w9TSTOeUI8IiUekbIqS6ofT-YnlUEWJxV4ysY1Ck9jHOVpOl6se_deMHt88sn6CBt6lIr67_OgQoswHxXuzs5xhcNzkpZpnIztXGgl7YFV_Y7bAmstfLB0P2UYySFPYz-f5Z5lGArGYn8r9mcQX6SxVDLwbNttgvx9Vz4WHk9bn6aM-SGy8HGFFLPQi1q9nQcnnhWjb21-4-THCoiTVhdphFk4tprsaogkxXEKUR7mUYYYw8sNFX5mmrk6x4WmaN6diOyLoj5u-G1kjp6V4N9tfA9At7WiPMo8E7FvYsaLMPmxKcMi9JhGiBcYIMdFeCaI4wqK0CtkyJvXviJmo0g919SsH4CpZ9Cvc0fYrT28OtMK6ldvHapWdnRe6m4tDidKxQej6ak3yiJmng_xMWCEwpjcXIvn3WvKfI7narOhkh8Hj5Nk2ucO1aVGWntZ45ARh2wxSjbLJdtuMe5_lNQI5jKLcDZ1FPWEXcPSaiqs2XUfTUfr2u1IpUf9QwG_C8odm_tTwXOxhVAvjRA_Z0FchBV-F-kuVtA3cXoHvxdYjgY6gfcKla-IzrxkdV4wWBpW2AMjPQYjit6n3Ttg_KJK8z4Sv6jyVhj7Xj22oXX9OzCr9JdNU4_Z2lDhiDK87H0veAOl_o0QRpHPp8yHME2igr1n7vXo2UtXJ_LUe9D_ByE8V8gGEhV-uMuPUw5JBtB2eXFndBdmZkOQOHj9pFQ9xPIRtX4wE4Yk8c0qjpI1rSKCDpcO3zsvryKvTvYPnzlOCcsztFw6wJbGUm2Xg5JF2YqaB2Sxcn2T-e-_vPx_uf9JpiRzmky7A75_7Dq7eaYsiGZRHAfRLDyoP07wFANFveIfcoxjoHu_dsf8QTRDoLXS-7N_VA1lIWIDtyoqauD99RlshVsyDghH3Xq1BtDkGVmFDAASo7Jt0PRb2UrbDnM_gzZCSYTzaTgdTnevAnJFQhLhEOdhgfPQtcU5TaIkLCBP8AT_DdsG_z0SKnA4xUl2CIf9G6ZzYjivbdjoyLYX6U5s0UZxqJ1go4zY9l1dNVnXwK9FB8QeU4fhG7ykcu9uM8T3b9JoY1bduGHRfuIzurkaLppmT0-z-Wf09PkGLe5ub-_--PJ_n7r7vUf0dNc1X_32CT3c3N89PO2vd-5PXRTlxm2ydy-L9gIaUJfrgSNq91N-JwRkYTdNQBb9RdAkKkrC2e4-6KfmMOsPrMW5VmR3MXvBLyNeRAW9gEuchTiOCxKTi_Uly3NKeASEpDgsU8ZTTEJc5JSGhJGwvBCXHYFJiHEaZ4RMWZbjLMlCXuKYxykJ4hA2VNRTt4enSq8uurvByyzGYXRR0xJq0913EyLhBXWdASFBcn2hL7t9X7YrE8RhLYw1h1mssDUcrsH7a8WXNUi3w5vD3v7Yjd9Fq-vLj996ds79KwAA__-uKVRL">