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

    <tr>
        <th>Summary</th>
        <td>
            Wasm inline asm: use after free of `Signature`
        </td>
    </tr>

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

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

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

<pre>
    Compiling

```ll
target triple = "wasm32-unknown-unknown"

module asm "foo:"
module asm " .functype foo () -> ()"
module asm " end_function"
```

with `llc -filetype=obj foo.ll` crashes.

AddressSanitizer report:

```
==80752==ERROR: AddressSanitizer: heap-use-after-free on address 0x000107808e48 at pc 0x00011b160eb4 bp 0x00016b019e60 sp 0x00016b019e58
READ of size 4 at 0x000107808e48 thread T0
    #0 0x11b160eb0 in llvm::SmallVectorImpl<llvm::wasm::ValType>::operator=(llvm::SmallVectorImpl<llvm::wasm::ValType> const&) SmallVector.h:1024
    #1 0x11b17c38c in (anonymous namespace)::WasmObjectWriter::registerFunctionType(llvm::MCSymbolWasm const&) WasmObjectWriter.cpp:1281
    #2 0x11b164a40 in (anonymous namespace)::WasmObjectWriter::writeOneObject(llvm::MCAssembler&, llvm::MCAsmLayout const&, (anonymous namespace)::WasmObjectWriter::DwoMode) WasmObjectWriter.cpp:1478
    #3 0x11b15fe4c in (anonymous namespace)::WasmObjectWriter::writeObject(llvm::MCAssembler&, llvm::MCAsmLayout const&) WasmObjectWriter.cpp:1452
    #4 0x11b029610 in llvm::MCAssembler::Finish() MCAssembler.cpp:954
    #5 0x11b107ab4 in llvm::MCStreamer::finish(llvm::SMLoc) MCStreamer.cpp:1021
    #6 0x118021fa8 in llvm::AsmPrinter::doFinalization(llvm::Module&) AsmPrinter.cpp:2564
    #7 0x11653ec78 in llvm::FPPassManager::doFinalization(llvm::Module&) LegacyPassManager.cpp:1509
    #8 0x11652c368 in llvm::legacy::PassManagerImpl::run(llvm::Module&) LegacyPassManager.cpp:542
    #9 0x104deaca8 in main llc.cpp:408
 #10 0x185fb10dc  (<unknown module>)

0x000107808e48 is located 8 bytes inside of 64-byte region [0x000107808e40,0x000107808e80)
freed by thread T0 here:
    #0 0x105705bcc in wrap__ZdlPv+0x74 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x61bcc)
    #1 0x11dc717b4 in std::__1::vector<std::__1::unique_ptr<llvm::wasm::WasmSignature, std::__1::default_delete<llvm::wasm::WasmSignature>>, std::__1::allocator<std::__1::unique_ptr<llvm::wasm::WasmSignature, std::__1::default_delete<llvm::wasm::WasmSignature>>>>::__destroy_vector::operator()[abi:v160006]() vector:446
    #2 0x11ddb639c in (anonymous namespace)::WebAssemblyAsmParser::~WebAssemblyAsmParser() WebAssemblyAsmParser.cpp:195
    #3 0x11ddb64b4 in (anonymous namespace)::WebAssemblyAsmParser::~WebAssemblyAsmParser() WebAssemblyAsmParser.cpp:195
    #4 0x118053a24 in llvm::AsmPrinter::emitInlineAsm(llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::MCTargetOptions const&, llvm::MDNode const*, llvm::InlineAsm::AsmDialect) const AsmPrinterInlineAsm.cpp:131
    #5 0x117ffce88 in llvm::AsmPrinter::doInitialization(llvm::Module&) AsmPrinter.cpp:541
    #6 0x11653eae4 in llvm::FPPassManager::doInitialization(llvm::Module&) LegacyPassManager.cpp:1500
    #7 0x11652be3c in llvm::legacy::PassManagerImpl::run(llvm::Module&) LegacyPassManager.cpp:542
    #8 0x104deaca8 in main llc.cpp:408
    #9 0x185fb10dc  (<unknown module>)

previously allocated by thread T0 here:
    #0 0x10570578c in wrap__Znwm+0x74 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x6178c)
    #1 0x11ddbb39c in (anonymous namespace)::WebAssemblyAsmParser::parseDirective(llvm::AsmToken) WebAssemblyAsmParser.cpp:890
    #2 0x11b1deeb8 in (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) AsmParser.cpp:2010
    #3 0x11b1ca118 in (anonymous namespace)::AsmParser::Run(bool, bool) AsmParser.cpp:1003
    #4 0x1180539c0 in llvm::AsmPrinter::emitInlineAsm(llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::MCTargetOptions const&, llvm::MDNode const*, llvm::InlineAsm::AsmDialect) const AsmPrinterInlineAsm.cpp:128
 #5 0x117ffce88 in llvm::AsmPrinter::doInitialization(llvm::Module&) AsmPrinter.cpp:541
    #6 0x11653eae4 in llvm::FPPassManager::doInitialization(llvm::Module&) LegacyPassManager.cpp:1500
    #7 0x11652be3c in llvm::legacy::PassManagerImpl::run(llvm::Module&) LegacyPassManager.cpp:542
    #8 0x104deaca8 in main llc.cpp:408
    #9 0x185fb10dc  (<unknown module>)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWE1v4zgS_TX0hbBBUd8HH9x2DDTQH0ESzAB7MSipZHOaIrUklcR92N--ICUnktvJpDML9GJ3gCCiSVbVqxL5HkVmDN9LgCWKP6B4M2OdPSi9vOPNly-zQlXH5Vo1LRdc7hHZILIa_iek_xOi77BM78Fiq3krAKNwgxGlD8w0IZ138ptUD_L0RJSOXTWq6gRgZhpnUiuFwtXTlOkgXtSdLO2xBVwrhRHNEM3xHIVXQ_slO5DVzptyNQp_ymGM5oHbA_Z5lXhecwEuGgo3qvjDxVwIgRKCS83MAcxibLmqKg3G3DLJLf8OGmtolbYum0uFG36GGxRuMpLGtG9e3dx8vUHhCp-7c30HYO28MzBntQU9rzUAVhKzfiomj4SQgKQZySDKMLO4LYfOoAgSAkWEi3boSQoS5JAQbKY9cdYju7labbCqseHfAUfO2Zl7e9DAKnw3ZIIxxoiGBJPHUzSCucRC3DeuBuHqtmFC_AalVfpj0woUrp_H3ErpW78xcedLftX_Vi1oZpV25aHZ-73hUkljEU3ckhkZLw4oXAWERpM0giGNtAyz0qWBaMakksdGdQZL1oBpWQluyfk4vzPTfC3-gNL-rrn1bwuFKw17bizo7bD0PJRxEp_Xt8emUMKZTwCe-1uUbetw0iyY4KSnckcsIu_G-eDaXyX0I2cIV8ZAUwjQHtoaT8eaT-yoOjsCv34fhs2D-qwqeC35KM0myYdD8nEN0ftfUp_8fyLzV5DHdII86pETmifB2S4Zh_UdWy65OQxcNxodfOfxdOXGQ1FIyoro3PWt1cCak-f65Hm0qz5_UmUf6DT3lAOh06WX-EAZoUHNsmmglWmuNZdPJa7Ulksm-HfWE_C4yp6oh_I92w1BaZxMs0t90CQOoUzPgm6vr5kxn5lk-5-N-wn2rDyOzE85xySfhM-G8LQMk7Pwwvvo2yNPPTd5MujegSCOpgsndwBIVAEr-6I3zKMoh_kROW0RR2KejLO4LgJSldhrZLgeVBj3Eul4luZjhTqjeW6wUCWzUOEMF0cLBnNpeAVOHJJo7rqwIzolMYo_TKwJoutxR0aeYjntqnBxfJYRfAANT2o5lhMSpyQuSr_FHzRrd7t_VOL6HtEP5DGNXFqCF6Vgcr_TdsEMkztlHnfVUbKGl4vqKHiBwhXTTRKBt0qCoiyfsEw4vyrTIO13jrFV_6p2u6Bv3HvJQOH6x6FO8n92sGutfkGKHDfc8r1kttPg6ORHHxXUrBN2V4EAC2_y42Ty6rI3JvyL-2_EO_z1ziowVqvj7lTcier3x7r4Ayu4q3-QEEISFG8GPnyyiaLkgjBWVZGE-Zu0AYqBWY-OhZg2JxL518WhPvyloRN35PEFsXKAon51_WpA0cDfccho9Dp_Q8PtRym4hJVppnphNZf7G6jP9fG2K_pPgo-yVpPTwXjWnZ_ytXX0bF6atfmiKjgNrqaDz6hOwDecCS_leW8yEpWnyaeKhMEF6UzruoTsTxXtozuXv0fT4uiSjjpJYxC9QdLeGvgVUSMXNZUWEJa_QtSyN4vaSAR_VtZaDfdcdUYc8UCMP6c_aTbWH_nQ_CX5SbOX5Kcqir_KWK1rb7iG0vL76QfHyjR36hvIP-GKLCcXPzMqgCJ7A7ZLgG4ts9CAtJ6qXjW_nsx3DHL5BN7HuIWGrZkQBSu_eYLoN904H0oCcvHToWRB8I6EbvyyL5QSDlX__DFqQEj4AuXmJfn_pFw6Op_-zbf_m3x7uuKaVcuwysOczWAZpAFJCY2TcHZYpilQVkVhSEgJcZwHRRYGcRgRViWUxsGMLymhEQmDNMhJTsNFFbCY1kFa5DELYhqhiEDDuFi4UiyU3s-4MR0sszhOs5lgBQjjrzQplfCA_SCiFMWbmV46m3nR7Q2KiODGmmcvllsBS38dw_3Sxf05FncGsL91w_2tW41RQp6PtQmZdVosD9a2xt9fbhHd7rk9dMWiVA2iW__O-se81aq_bth6YAbRrQf-7wAAAP__XGSEeQ">