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

    <tr>
        <th>Summary</th>
        <td>
            [SPIR-V] Returning undef from a function with a `spirv.Type` return type crashes
        </td>
    </tr>

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

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

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

<pre>
    When running

```
; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s

%literal_8 = type target("spirv.Literal", 8)
%literal_false = type target("spirv.Literal", 0)

%uint8_t = type target("spirv.Type", %literal_8, %literal_false, 21, 1, 8)

define %uint8_t @foo() {
entry:
 ret %uint8_t undef
}
```

the output is

```
llc: /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp:999: Register llvm::SPIRVGlobalRegistry::getSPIRVTypeID(const SPIRVType *) const: Assertion `SpirvType && "Attempting to get type id for nullptr type."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./bin/llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-unknown ../llvm/test/CodeGen/SPIRV/inline/type.undef.ll -o -
1.      Running pass 'Function Pass Manager' on module '../llvm/test/CodeGen/SPIRV/inline/type.undef.ll'.
2.      Running pass 'InstructionSelect' on function '@foo'
 #0 0x000055d3922d77ed llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:11
 #1 0x000055d3922d7cab PrintStackTraceSignalHandler(void*) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
 #2 0x000055d3922d5e4f llvm::sys::RunSignalHandlers() /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Support/Signals.cpp:105:5
 #3 0x000055d3922d8389 SignalHandler(int, siginfo_t*, void*) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:7
 #4 0x00007f044ac49e20 (/lib/x86_64-linux-gnu/libc.so.6+0x3fe20)
 #5 0x00007f044ac9de5c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00007f044ac49d82 raise ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f044ac324f0 abort ./stdlib/abort.c:81:7
 #8 0x00007f044ac32418 _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #9 0x00007f044ac42692 (/lib/x86_64-linux-gnu/libc.so.6+0x38692)
#10 0x000055d38f6e23dd llvm::SPIRVGlobalRegistry::getSPIRVTypeID(llvm::MachineInstr const*) const /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp:1000:7
#11 0x000055d38f762190 (anonymous namespace)::SPIRVInstructionSelector::selectOpUndef(llvm::Register, llvm::MachineInstr const*, llvm::MachineInstr&) const /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp:2734:18
#12 0x000055d38f755a79 (anonymous namespace)::SPIRVInstructionSelector::spvSelect(llvm::Register, llvm::MachineInstr const*, llvm::MachineInstr&) const /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp:603:5
#13 0x000055d38f7552be (anonymous namespace)::SPIRVInstructionSelector::select(llvm::MachineInstr&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp:554:7
#14 0x000055d393113566 llvm::InstructionSelect::selectInstr(llvm::MachineInstr&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp:387:3
#15 0x000055d393112713 llvm::InstructionSelect::selectMachineFunction(llvm::MachineFunction&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp:216:13
#16 0x000055d3931122aa llvm::InstructionSelect::runOnMachineFunction(llvm::MachineFunction&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp:156:3
#17 0x000055d390cbfb12 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:108:8
#18 0x000055d391438fcf llvm::FPPassManager::runOnFunction(llvm::Function&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1406:23
#19 0x000055d39143d68b llvm::FPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1452:16
#20 0x000055d391439849 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1521:23
#21 0x000055d3914393f6 llvm::legacy::PassManagerImpl::run(llvm::Module&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:539:16
#22 0x000055d39143d931 llvm::legacy::PassManager::run(llvm::Module&) /usr/local/google/home/cbeckley/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1648:3
#23 0x000055d38db298e6 compileModule(char**, llvm::LLVMContext&) /usr/local/google/home/cbeckley/llvm-project/llvm/tools/llc/llc.cpp:739:9
#24 0x000055d38db27b85 main /usr/local/google/home/cbeckley/llvm-project/llvm/tools/llc/llc.cpp:397:13
#25 0x00007f044ac33d68 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#26 0x00007f044ac33e25 call_init ./csu/../csu/libc-start.c:128:20
#27 0x00007f044ac33e25 __libc_start_main ./csu/../csu/libc-start.c:347:5
#28 0x000055d38db27361 _start (./bin/llc+0x6239361)
Aborted (core dumped)
```

This was run on Linux with a build of [`70a1445e401f6d7b531933ab157fba98ec84f69f`](https://github.com/llvm/llvm-project/tree/70a1445e401f6d7b531933ab157fba98ec84f69f).

This issue can be assigned to me.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1z3CgW_TX4hWoVH_p86AfFnp51lbPjspPsYxeSkJo1AhUgx_3vt0DqWC17NplJJp7dKpfVTcPlnHMvFy5i1opOcb4FyTuQXF2w0R202da-nVe8fpD8eFHp5rj914EraEalhOoAKv1fiuY_VAL6Dt59_CegJZSyhptHbkR73PSsPgjFhbLOWLj5DcFN74wYJAf0yg7CPG5G9aD0Z3V6QkASCzcabiDILuFOSH554PVDaJ_nJYkUjhsm9zkE9Aq648ChY6bjDpAcEBIsRzdTJ0AIIJcwB6Q4H9wyafm3G0CzgWBjFMrle_ffRn84DnweukS8-h5A-DaC_X-8hIrKhrdCcbicMEat1mGeAoLsHUAlV84cAfX9oeFu2XtUDW-9qexq7TBUugOHenTD6KCwL10qZe3dCchutAaQndS112LXad1JDsjuoHv_qOcw8V3kY78ZjP43r9381T9EBcjuwyzQ7v72-u7T6fmr1BWTd7wT1pljVA8DoGVRFH7mqZUbGOzQEtDylTHTDx134Tcv-vUVIHmtlXXwSxsEpPSKhWZvvLSWGye0giBF995hc7cUkBQCQkrneD84oTroNOy4m_wsGthqA9Uo5eBMaIuClzPYMiF5EwFU3t78Ut7_Au1Y9cJBBquxg4YP2jhv6-DcYD1ssvNyCncYq6jW_UKxcx2FtSO3gOwgUw0UqpZjw6F3X22YPcCK1Q_OsJr7ue8dqx9gM_bDFBIoAqi4NbozrIfMdGPPlfPTwwiQXSVUmO-7lmwUPUN33HrIl7rhv3K1cLdQUigfL0GyEJiRlGGlA1Rij_Juyi5wYNZCQLLdqOrgolvf8J4p1nHjldYK9roZpfdX9h2z-9EAleS1ya-9AGOY_57L4IgwcXsCBUh2WoyZX3qAUATRE0IIJUlDC0KaLOPNInrt0U4fbo1QLjjqg3cbIPlzJ8M-77V1hrM-BOMlFMqFxf6DFuL9OPhIBGT3UYkn3yA6xaSNhPILPkcxoCXGMyW8plSzCq7wTwb-wVQjvX_yRy2aeb39LNA58qBnzGSFOeFx-5ob7kZ1Bt2e0uoPB31CO-U3jBJAy2RGS1doc5oXcC1piIFLaEUnVKv3Lsh7CX--0jHOAS1PAR_P2LMWxTGr44ITBIOKs7WnPN2n8UYKNT5tOjVOP9SR1VEKyDv0RFtO5p3VG0zODRYNT2q43w_uYDhr9g9Cyr3oB8l9FmNhHfrlrwbnKS-7RQGtj-UsnY2na7RNTqBhwvJgxAaigOxCRrFH2_DBZ91B2yBE6BnMkgzQ8mQ1O7dKSdwiyCqf7IMd10xShKYwPMcLCfMXw3EO90rupWbNvtE9ExNHoQJH39zbrmaTLYwzD-akX7GiSNKC_EGH5GlBTmclipcpLW9TTmjT_KkN-XnM-2mHCQl23pAXm_NbHDgwQmh2ieeMzzhnKcFFiGqmtDr2erRQsZ7bIaTuYiHEiz1DmznlhG-_DR_DeWwpxumQ41fzVyX6vS5ho_g5-r1CcRaRZDTsHPmsIjlXMUlYVnynisPjaSv-v1QwRXTeF7x-dK0fqfiPiMLfXYuzBm_FPknixRqMl7sixZgmabrw3cvT2YLhzObn0Hw-a06p5fqee2svAM4sae7TNZ1ZJiuWJMP0W1nOnE6H5Nf4Pv_2lpQJTn1eOHFO15wJY1_nbEb1m_qfoYyTdOHlbMkY1VVbYfIyD52Q-2JnwflVsn85y1cwfdkr_QHwlOTzJTUc07ytl0ft3a0fearc3obU9R0guxvesfq4AHNiEyPvKXJyVbHi06R59Q183odq9Dwe56afySUh_pFOXAhacSny-Ksb8Pu_NcGE4IWzCF4TpO1yj5DBzFxxPxu77gf5hdkbM0posfQYWUdfQfHXCf1dyOA0zp-zHjk7vzQVKXKewlr3g5D8SzjVB2bCwWx1Nru5-fT-UivHn9wPo-C0lna67Zr-z7iz4IS54CHxCnZW5QkMRdhfh4AW2WKHJKsimPosBPd7X6ftrWPG7Wsm5f5LZVjb8WXVOpfErw2KDp51vPBVup6RkwSG_kIJt55k-ugtb4LlqRAl3vkEzRbXVXGweMbhNfivWqZx9nwsJvnaPzTFcDLpk9vZpWYoaFNCC5riqaQtfRHOGxhuiA0P96S8mcvd8-vxDwdh4WdmoRkV1Are-JIZfhbuEG50hWygbiFI3oEUZYjhOE54jHCbNlmVUFxQyiqcZG3FipzXedymReuNJ74a_sN3wM5wH2LfPBEpogWNcIMMa6ZgxeH8zqeBTsOeRxfN1ieagl3wLc5imuUpItnFYYt4U1ctxW2KcM6LNE6qoqIxz-uYoZzQC7EliCQoRjHOECJZVGcNwgUueFLVGWoaECPeMyEjTybSprsIQLaYxjHOLiSruLTh1RMhin-eYAJCQHJ1YbZBgWrsLIiRFNbZZzNOOBneWfmaYvMJJFfwjrvRhBvccLsLW6N7yJ6va2fHgRQtXs-kCJowbrrcD9fp3F6MRm7__C39zO5xS_4TAAD__4nDhbQ">