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

    <tr>
        <th>Summary</th>
        <td>
            Possible assertion failure in BitcodeReader::findFunctionInStream()
        </td>
    </tr>

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

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

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

<pre>
    The attached test case seems to be able to trigger an assetion failure in `BitcodeReader::findFunctionInStream()` from [here](https://github.com/llvm/llvm-project/blob/ea0ee55c02b41b66d34f2830bd144ed6882137e9/llvm/lib/Bitcode/Reader/BitcodeReader.cpp#L6522):

```
Error BitcodeReader::findFunctionInStream(...) {
    ...
    assert(VSTOffset == 0 || !F->hasName());
    ... }
```

Test case: [bug.o.gz](https://github.com/llvm/llvm-project/files/12761821/bug.o.gz)

Command:

 $ llvm-lto bug.o

Tested on latest HEAD.

Stack trace:
```
llvm-lto: ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:6522: llvm::Error {anonymous}::BitcodeReader::findFunctionInStream(llvm::Function*, llvm::DenseMapBase<llvm::DenseMap<llvm::Function*, long unsigned int>, llvm::Function*, long unsigned int, llvm::DenseMapInfo<llvm::Function*, void>, llvm::detail::DenseMapPair<llvm::Function*, long unsigned int> >::iterator): Assertion `VSTOffset == 0 || !F->hasName()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.  Program arguments: debug/llvm-project/llvm/build/bin/llvm-lto bug.o
 #0 0x0000557b94577f46 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) ./debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
 #1 0x0000557b94578362 PrintStackTraceSignalHandler(void*) ./debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
 #2 0x0000557b9457572f llvm::sys::RunSignalHandlers() ./debug/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #3 0x0000557b945777ea SignalHandler(int) ./debug/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007fd728e3c4b0 (/lib/x86_64-linux-gnu/libc.so.6+0x3c4b0)
 #5 0x00007fd728e90ffb __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00007fd728e90ffb __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x00007fd728e90ffb pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x00007fd728e3c406 raise ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x00007fd728e2287c abort ./stdlib/abort.c:81:7
#10 0x00007fd728e2279b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007fd728e33b86 (/lib/x86_64-linux-gnu/libc.so.6+0x33b86)
#12 0x0000557b9322db3c (anonymous namespace)::BitcodeReader::findFunctionInStream(llvm::Function*, llvm::DenseMapIterator<llvm::Function*, unsigned long, llvm::DenseMapInfo<llvm::Function*, void>, llvm::detail::DenseMapPair<llvm::Function*, unsigned long>, false>) ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:6525:51
#13 0x0000557b9322de14 (anonymous namespace)::BitcodeReader::materialize(llvm::GlobalValue*) ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:6554:49
#14 0x0000557b9322e8d4 (anonymous namespace)::BitcodeReader::materializeModule() ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:6651:36
#15 0x0000557b93df13bf llvm::Module::materializeAll() ./debug/llvm-project/llvm/lib/IR/Module.cpp:449:1
#16 0x0000557b93236c26 llvm::BitcodeModule::getModuleImpl(llvm::LLVMContext&, bool, bool, bool, llvm::ParserCallbacks) ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:7946:40
#17 0x0000557b932383eb llvm::BitcodeModule::parseModule(llvm::LLVMContext&, llvm::ParserCallbacks) ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:8141:62
#18 0x0000557b93238529 llvm::parseBitcodeFile(llvm::MemoryBufferRef, llvm::LLVMContext&, llvm::ParserCallbacks) ./debug/llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp:8153:44
#19 0x0000557b940d6bd3 parseBitcodeFileImpl(llvm::MemoryBufferRef, llvm::LLVMContext&, bool) ./debug/llvm-project/llvm/lib/LTO/LTOModule.cpp:185:59
#20 0x0000557b940d6d90 llvm::LTOModule::makeLTOModule(llvm::MemoryBufferRef, llvm::TargetOptions const&, llvm::LLVMContext&, bool) ./debug/llvm-project/llvm/lib/LTO/LTOModule.cpp:198:57
#21 0x0000557b940d64e9 llvm::LTOModule::createFromFile(llvm::LLVMContext&, llvm::StringRef, llvm::TargetOptions const&) ./debug/llvm-project/llvm/lib/LTO/LTOModule.cpp:121:47
#22 0x0000557b90e88a75 main ./debug/llvm-project/llvm/tools/llvm-lto/llvm-lto.cpp:1031:43
#23 0x00007fd728e23a90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#24 0x00007fd728e23b49 call_init ./csu/../csu/libc-start.c:128:20
#25 0x00007fd728e23b49 __libc_start_main ./csu/../csu/libc-start.c:347:5
#26 0x0000557b90e85125 _start (debug/llvm-project/llvm/build/bin/llvm-lto+0x5d6125)
Aborted
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWF1v2zgW_TX0C1GBIvX54Acnjme6aLdBk-2rQYlXNreUZJDUTDq_fkHKtj7izdqZ6Q4QxNYHD8_hPbz3mtwYuWsAlii-Q_F6wTu7b_Xyl3-su_L7omjFj-XzHjC3lpd7ENiCsbjkBrABqA22LS4A80KB-2q13O1AY95gbgxY2Ta44lJ1GrBsMErInbRlK-ArcAEasRViq0o2YtM1pXv7Y_NkNfAa0QzRHCUEV7qtMYrv9qABxWtEs721B-OG0g2im520-64IyrZGdKPUb6ePDwfd_htKi-imUG2B6AY4AYjjktAiCoskESyqaMZIIcIoApFkGQ1ZCvkIR7pxR8qIbo6sz7f666A8HBBln5KYUkearRBZI3L6n5Djn7980LrV-PpVCIIA0Ryj9K4fjzHG7t75wq2ztohm356ev1SVAYsRWyO2xgSj9B6l9xjRcPMBsYc9N__kNRzX1jGdgmKUri-S7v8_n0KP2MpFpOh2QRvs_nhnVCqpwCC6CWmahBkNXaBOiDQfT3zf1jVvxGxhMaIR9pjKmdANnbMFgdsGK-5N--vDah2M33iyvPyOreYlDNBT4Sd4pzhAdCOg6HavpdxuF7bybmErr6B3QG8NlN7xpm1-1G1nXDz8o-v9MsCdHiK6QvR-NM8aGgOf-eHOh_L-9YPJzTlM2-xw1_ikIbBsLGIPU_j_OeAimY9N1b4172-tFK-mEmC5VFOgRy71rQKwQ_YvSwua21b3-xiv_OZyWQwl5OYNlvrcB-LousdPD6unB2y6opYWc2dZrOHQautS5837RxrT-Q2EeeOElKoTgO0ecKm52eOCl9-9uYOx3UVXH85uJwHGj7rdaV5jrnddDY11HPDbPi86qYT7lM3pndkWxIgygskLIYTEcVrkUZymVZSMYmd-mP7Lo5aN9eSe_VYce1jz37etOXo7ceHzBsqv3oxP3cEtMKKbfzXyxd2Qu4YrE8imRGyVUobYitKBdThjnbGE4hnFHuNX3gjltnfmvenc9dfxyjPEVuFAi85oxSmtLi3m166ZsDO9F9_B60Soz1Yhid1CkYERm4c3BY7nK_PXRisK2XRVoiOHtBIpzYCVUUGwV3wEfMmSbRJ9ULLpXj7smq5_UAamDRJE78iLH3IuNw4znmLmpKoKvN0e7F4DF9vvUqmtrA8K3GbhPjc4ec3BKkQ349cCzzly4UwG_OQa_MaCbrh6Ezn1FhlFJL2EPB72JlyWz-CyV4tLEqy5NOBxjA8NopvAX_0wAg4uGx1a40Pn3_TINHXlbgDOp8CUZmmJeeHyoIeyog-ev9VzC53eY4WmLCRzhDQv8LZRW9VysRVtzWUfFdl4se52bXYl7-HCMHWU8gEwnGllRZbcaCQ3ZOhbKAsnW5ZRKgpWOsxzdccNr8EcfM7Lf2Kd_3iqaW9UxXNBdOXxb67QUy49YsWVa1Yebskm1zdiLrfF4RA6Ng8dhNE7QldzC1pyJf-YVrVfVFtw9Y2rDm4sG1dLil3aiUZujGaSIBN_UtLnVnQKbqwv1wpIYrflWTIIiCcCRBWyYlwBj2zmJFdK3cjw41dENz3akUwU5UPZcVSS6VqypKTjzuYoaMxoB7a__Fgf1MQLnz59-3zfNhZe7LHDKdpWXfocxjxybUDfc6Vcj2d-wvqneZQ45WQQnc5EZwyKt0UfHM2zS96S_P-UloWRs1ZCB2nZXFpM8xEnr-MItZEzMZ-hbvWPu66qQH-Faqrm71Yas74DOSvNJ00bEUkhGJ7re-XRGzX2hr1ezqfnL_3_ya4LM5-VhxRGyZy8yMmYyAnglAS-w3DrajnPXO_Afjm4emRw2Tbmdeh-mmTf9cdDo0PDueQI8v8uudTALWx0W7-y6VtOfLJaNrurV-JPq6Ru_0UjlZNOiUCW8TTG5x7u7Zls2yoz-hU6-nr-6cL8hGyYkM36R8Zzgrdb19FtjeXabkuu1PZMoTTd60b32EhfGhTsXQ51JXg0aTSftIhy7IfIRtr5PP1XB_7Bg_eNK81Gv8IcaHwJdKLkkoiL4CxyTXE8YCezsMQhjXGP6jqH95wR-FY5FklI43OvvHJtPoiL528LsWQiZzlfwDJM8jhPw5CRxX5ZxHlYkCKK8qhKiAghhyhPRE4rXgoqYCGXlFBGcpqTlMSMBDElMeVhloaQR2UIKCJQc6kCxy1o9W7hD1SWSZqm4ULxApTxh-KUNvA79g8RpSheL_TS6ym6nUERUdJYM6BYaRUsH1tjZKHgeDw7Owe_6RB80Wm1fP_pkNfznwAAAP__KPg_Zg">