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

    <tr>
        <th>Summary</th>
        <td>
            [Backend] fatal error: error in backend: Can only embed the module once with `-fembed-bitcode -ffat-lto-objects -flto`
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          patrick-rivos
      </td>
    </tr>
</table>

<pre>
    Testcase:
```c
int main() {
    return 0;
}
```

Backtrace:
```
> /scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang -fsigned-char -fno-strict-aliasing -fwrapv -fembed-bitcode -ffat-lto-objects -flto red.c -o rv64gcv.out -c
fatal error: error in backend: Can only embed the module once
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: /scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang -fsigned-char -fno-strict-aliasing -fwrapv -fembed-bitcode -ffat-lto-objects -flto red.c -o rv64gcv.out -c
1.      <eof> parser at end of file
2. Optimizer
 #0 0x0000562992b6e730 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1e50730)
 #1 0x0000562992b6bb3f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1e4db3f)
 #2 0x0000562992ab9c5a llvm::CrashRecoveryContext::HandleExit(int) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1d9bc5a)
 #3 0x0000562992b65d02 llvm::sys::Process::Exit(int, bool) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1e47d02)
 #4 0x0000562991a19c68 LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x0000562992ac3d10 llvm::report_fatal_error(llvm::Twine const&, bool) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1da5d10)
 #6 0x0000562992ac3eae (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1da5eae)
 #7 0x0000562994141eef (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x3423eef)
 #8 0x0000562993ed9776 llvm::detail::PassModel<llvm::Module, llvm::EmbedBitcodePass, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x31bb776)
 #9 0x000056299266b321 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x194d321)
#10 0x0000562992dc7738 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#11 0x0000562992dcb0d5 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>>, clang::BackendConsumer*) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x20ad0d5)
#12 0x00005629933e8ab7 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x26caab7)
#13 0x000056299506715c clang::ParseAST(clang::Sema&, bool, bool) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x434915c)
#14 0x0000562993680539 clang::FrontendAction::Execute() (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x2962539)
#15 0x0000562993604856 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x28e6856)
#16 0x0000562993751ee5 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x2a33ee5)
#17 0x0000562991a1beaf cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0xcfdeaf)
#18 0x0000562991a15593 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#19 0x000056299342efbd 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
#20 0x0000562992ab9b90 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x1d9bb90)
#21 0x000056299342f83e 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
#22 0x00005629933f387a clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x26d587a)
#23 0x00005629933f434d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x26d634d)
#24 0x0000562993401264 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0x26e3264)
#25 0x0000562991a192f8 clang_main(int, char**, llvm::ToolContext const&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0xcfb2f8)
#26 0x00005629919569eb main (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0xc389eb)
#27 0x00007cf278629d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#28 0x00007cf278629e40 call_init ./csu/../csu/libc-start.c:128:20
#29 0x00007cf278629e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#30 0x0000562991a14845 _start (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/clang+0xcf6845)
```

Godbolt: https://godbolt.org/z/rMGjGaPbb

Found via fuzzer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl1v2zjW_jXKDWFDIvV5kQvHiTszaDFBk5lbgyKPHE5pUi9JOUl__QtK_hAVp-3OrrvATpG2EkUePuc5n5RCrRUbBXAdZTdRdntFO_ekzXVLnRHsy8yInbZXteav149gHaMWIrKI4tsoXkR5PPyw4V4oh7ZUqAiXEa5QVNwM4wghZMB1RqE4IvvBqLidSNnf9v_eUPbFGcrObLa_JXcowivLDHXsKcIrx2YOrBNqM9zQ1szSCK_qTkg-M7s83bDd8V7K3XYmhepe_JCHvGKSqg2aNT0dfMaeqEGzRumZ9Uy4GZWCWtFPeTa03aFZA9sa-KwWjmkOaNY01M2k0zNd_wXMWTRrpNPIAJ8zNNNoD2KuO4dme84a6qhEYIw2EVkMF0goVFP2BRT3Y0uqkFbyFfXbIfcEaKt5JwFpxWAQc__xbvFwh2xXb4VDFNXdBhlotXHIafTkXGs9k3gV4dVGuKeunjO9jfDKE7H_b9Ya7XFHeCWs7cBGeIWo4kgoJjsO_c7MUPvUoxvMg5eoNdAazcBa4MjqzgzDfiW1VjNBHXBkOoUsM6J18wHyg6PsC-Ldtj3aOJ6je6M3hm4RNZtuC8p52P8Thk7mqP8TkSXoxrtvS40Fg6hDoDjSDWqE3JsTz9HvrRNb8RXMPoYiTGIUv8RxHGc5ripc51CQGPUGJIuILOyrHS7ujVCup_dxsFF5mmTo81pbZ4BuI5x7Ownl-mj1QfsfpznCN_FLAllckDjC1UmXZKJLXZPmnC6fO_UgNorKX6jiEow9JJdLwk15TZoALg7g0rpiGR3BXfqo-AxM78C8LrVy8OKGJwPsuxfhIlz-BKp5VbOMBtjJhOqMx_i82_RBPNyMES9RrbW8POsFj3GAPB0jT2hSsbxEHz_--enOp8m9R0S43GnBI7zwSPtoZlpZtx84QGcsWfviNGetTzhx__e4UxbalxGejENrSKXrPlmvh2Q9DqrHZ6HgsGv-swjjNONJGFX5VA2gcGkMQCHAUIwxpEmaADSXxEBSTADCcC3HGAjwqijykTk5OCrk3uuptZ80BxmR5WnGp77Aekuexu58EbgZaoBfFT5dKCpfrbCfqKIbMOekkbv-p3eoTgUedNgv_ztC_aqLuhpJ6roo8oDiKnC1PK8JTkbIe1rfR_2PoS6pUk5wcqTOl76wjnNWFKT0GKjS6nWrO4sU3YJt-9pdHZxPuIW1sK3l6y8gW6_Rvj7uOwXqhFb3ogUplK_5A4Z-0s3QTC6Yn-Jpso4PTzol_q-DdetCgnyX0D4b4WB96BVGizg0tJNuzUGCg-8sHCw3WOd72z5qLX_vXNu5lRic5Ef2nKwab_iWg6VWttv6qrHwlt-P_uGEfFsYvK2Sia3qmGdjsd4ueyEDhpD5W0E3SlsnmL1Tm94wU2C_AOVgHoAa9uRNqZUNSslo6lJz-ADqO7MeqdmA-86kj1Rtzk050frgjFCbzz6zjocP4bY4z-_Jx05LflXOdFbs4DM0S-XuJ1bfNfuew5vv4dU66L3mv-KmP-AyF0wWOKY85lmQLILOkxAoaV18C-So63w0VFnZ54U_lJh45uLh8dCoXjwJ4pxRWheBXkFXmsV5kWRsrNe9Px0tHh5D1A-wpUGL9VNarZSkVZKxAH_Qm5K8jDNSjfGvjGf3GBD7phpY5-DyRxhc5TgjVQA4CwHHaZnlYXLZtkKC-VVZR9Xw5uUI-RDW5fsaXt6LSsjLLA-UChpeUmQJQJieB_gn3Xaa0beqvNH98qFOCQEIQ72YHHdqoM3x3BL0PAtj6KtPzWQZHnj2OWx6CDoekC6qE2s40CZQqZyolGUVQQejLJPHPnZHij1sqZR_AnPa_Lpt5Vn9JnXKy9hnslElqxA3YgfmfFUPmleSYmhq3pM0ktt0qnfstel57p8OkXtsRRmVsqbsy7pRHunJn4a99761TJZ6u6WKT5PAWXsey5fuqzMNzyWnonwsWMcF6zV7eUmS4aamVjBf3LxhBxaDyX5g7QwVzh4eT8RRKX2saDN67qeMTtW9Qw2c90siXEi6rTmNcHGiCpdSew-p0G-6PmsPHE9fr9RV_EOvVz536oE2IF8DOr9tusu_gamreBwFOJm4W1MSQP9kd_EGmLfUuHn8Tb-YND8NKQv6LnF9Dqdvqu2BzSDhTxb6Ce91yt-Yupi87TnqdrlGimdlQQPnIhOOUpLyf5Wj33Rt3yfoN11_FNa9d054k7KPPtFS4d1h_xLxRzkdH-B-JrM5SXnAbNjipXGC8_Q9LW5H10HTcabbeM8iP5HZC7f7QHCeBlxm01e5uCkH3Ifu5qBLn3oW-8Tx_TJ_0X6mxk0ZqBH0m0mV5RXU_TfPi-IgZQV1gOPQKhaswUWZ44pXMVqvpah9FqfGrX1v0lOL5l6Y7SK8mvtL-2o5tDbCK9U6GeHVuUXzp4gssjIiiyQ_7VpOd4U0Rv0aoYSbbjRceumzXvqceXHYC8WjHF-dExqock6Ls8JJUXnYR9nhF7OEJmmZZmiQelnHyct01Nuf-8L9QfNaS9_GTD_PDg_m2nggXyO8Mp8-_PWB3tf1eP1Kd4qjnaCo6b5-BXPFrwmvSEWv4DopEpwnMSHJ1dM1pCnkJWuKqi4gK3iaF2lZ5KRkOcOM0itxjWOcxmlc4iTOSDJPGprWTdbUDeWYVFWUxrClQs690h7XVf99-Los4zS5krQGaftfH8BYwTPqH0YYR9ntlbnuiaq7jY3SWArr7EmKE072v3ewf4cRZbfo3_4ejp6Fe0JRHv_gV9soj686I6___jfynob_DwAA___6UT-E">