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

    <tr>
        <th>Summary</th>
        <td>
            [SPIR-V][OpenCL] Passing struct by value crashes the compiler
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    The following OpenCL snippet:
```c
typedef struct s {
  float a;
 char b;
  int c;
} s_t;

kernel void k(s_t x) { printf("x.c=%d\n", x.c); }
```
Crashes the compiler:
```
$ clang pass-struct-by-value.cl -target spirv64v1.2 -O0 -c -fintegrated-objemitter
fatal error: error in backend: Missing TableGen record for OpenCL type: opencl.s_t
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: ../install/bin/clang pass-struct-by-value.cl -target spirv64v1.2 -O0 -c -fintegrated-objemitter
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'pass-struct-by-value.cl'.
4.      Running pass 'IRTranslator' on function '@k'
 #0 0x00007f40b857edd0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xc9fdd0)
 #1 0x00007f40b857c1df llvm::sys::RunSignalHandlers() (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xc9d1df)
 #2 0x00007f40b848126a llvm::CrashRecoveryContext::HandleExit(int) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xba226a)
 #3 0x00007f40b8576332 llvm::sys::Process::Exit(int, bool) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xc97332)
 #4 0x00005559ff338ce8 LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
 #5 0x00007f40b8499770 llvm::report_fatal_error(llvm::Twine const&, bool) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xbba770)
 #6 0x00007f40bcc319fc llvm::SPIRV::parseBuiltinTypeNameToTargetExtType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, llvm::MachineIRBuilder&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0x53529fc)
 #7 0x00007f40bcc51ecb llvm::SPIRVGlobalRegistry::getOrCreateSPIRVTypeByName(llvm::StringRef, llvm::MachineIRBuilder&, llvm::SPIRV::StorageClass::StorageClass, llvm::SPIRV::AccessQualifier::AccessQualifier) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0x5372ecb)
 #8 0x00007f40bcc37721 getArgSPIRVType(llvm::Function const&, unsigned int, llvm::SPIRVGlobalRegistry*, llvm::MachineIRBuilder&) SPIRVCallLowering.cpp:0:0
 #9 0x00007f40bcc3b0dd llvm::SPIRVCallLowering::lowerFormalArguments(llvm::MachineIRBuilder&, llvm::Function const&, llvm::ArrayRef<llvm::ArrayRef<llvm::Register>>, llvm::FunctionLoweringInfo&) const (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0x535c0dd)
#10 0x00007f40b93d47c4 llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0x1af57c4)
#11 0x00007f40b8b07ca7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#12 0x00007f40b8753a6e llvm::FPPassManager::runOnFunction(llvm::Function&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xe74a6e)
#13 0x00007f40b8753cb9 llvm::FPPassManager::runOnModule(llvm::Module&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xe74cb9)
#14 0x00007f40b8754605 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xe75605)
#15 0x00007f40c34076d6 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*) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x1fda6d6)
#16 0x00007f40c38a9582 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x247c582)
#17 0x00007f40c1ed4119 clang::ParseAST(clang::Sema&, bool, bool) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0xaa7119)
#18 0x00007f40c43d1a89 clang::FrontendAction::Execute() (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x2fa4a89)
#19 0x00007f40c4348615 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x2f1b615)
#20 0x00007f40c4460f35 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x3033f35)
#21 0x00005559ff33b079 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (../install/bin/clang+0x18079)
#22 0x00005559ff332e23 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#23 0x00007f40c3f5d72d 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
#24 0x00007f40b84811a0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libLLVM-18git.so+0xba21a0)
#25 0x00007f40c3f5dfae 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
#26 0x00007f40c3f226ea clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x2af56ea)
#27 0x00007f40c3f231bd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x2af61bd)
#28 0x00007f40c3f300a4 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/mnt/md0/linehill/ws-chipstar-4/install/lib/libclang-cpp.so.18git+0x2b030a4)
#29 0x00005559ff3383d0 clang_main(int, char**, llvm::ToolContext const&) (../install/bin/clang+0x153d0)
#30 0x00005559ff331a23 main (../install/bin/clang+0xea23)
#31 0x00007f40b7492d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#32 0x00007f40b7492e40 call_init ./csu/../csu/libc-start.c:128:20
#33 0x00007f40b7492e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#34 0x00005559ff331a65 _start (../install/bin/clang+0xea65)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWsty2zjWfhp6g5KKBG_iwgtZtrrdlfzxb3uyVYHAoYQOBHAA0LHffgq8SAQtJe6pKJupSiwS1-98ODeAIMbwrQS4DtKbIL29Io3dKX0tuIQdF-KqVOzt-nkHqFJCqO9cbtGXGuTqEzKS1zXYIF4G4W0QLoMs7P7R7t2-1cCgQsbqhlpkUJDfdDUIVUIRi0gQDyV0RzQqj--IS4vo4T3Ib5HZ2ON7-_cbaAkCvSjO0LcAL8zGotcAF24mVGsubRXgRYDx65wG8W2AUxakKxlgHOAVcoW4COIbFOS3ExG615UmZgcG2R0gqvY1F6Dfi9u_4gRRQeQW1cSYWSf0rHybvRDRwJwKNLNEb8EiU3P9kiUv0Ryj2ZcQzSiaVVxa2Gpigc1U-TfsubWgu5ErYolAoLVyk3cPiEtUEvoNJHNln7kxbmWeSSngD5BIA1WaoUrpYbXcarimqgZJxdyR2Y7-8Olu-XSHTFPuuUUElc0WaaiVtsgqtLO2Nk5kvA7wesvtrinnVO0DvBbiZfiZ1Vr9DdQGeM2NacAEeI2IZIhLKhoGHYGOzBa01YSCW4FaQ60VBWOAIaMa3RW7nsQYRbnjA-lGIkM1r-28g_xkCf2GWLOvD4sRzoOweNBqq8keEb1t9iCtA47mc4dKGkuECPC65DLA68ssVORABPEKVBXEd6gm2oBGxCKQDKkKVVxA1xK7livFAG1BgiaWK9nVxK7msZGS9wBRgPN1I6lrgh5cwWciyRZ0gHOkJNor1ghwrc6IE-C85y05Nfb947Mm0ghi1TBkNUwX4DxIwm_up7PKAMchCl_DMAzzKgnLRZoDYyFqdSFeBvHSvJnu4cGZX7tSz91yL46NNPm-UcZqIPsAZ27JubSt3TprXe_dy3rPQqdevR8K8Pq7mdEdr40lepZ4iyp42f399Onr51m02HI7NyrAN-ErLSrmBiqOEkQTCWjEqlMSPDbyiW8lEX8SyQRo06K7DEgWscoDiT2QySLCGRmBbD3TI1D1AvptpaSFV9vVdGDvXrkN8OJitJYE44x4iOMJrVkc49OK0Vp89zLGuUKlUuJSDOdxjD28SY83TdOiquJ4QWGBXM8752D7NQ_wwkWXAC8dvjZIUSWN7QsGwJRGmz3hck5r55PC9v9hptRfy6LI87HJdN5207r5Tefmx8by_J1LGGbNLktTWZI8960lG4OnNI6Kio7APz3cP37tHlt_d9NwYbl8fqvh_8gentVz60vvXq0rcjHasq75ZkNfX6OoeymJ4XRjrOZyG8QrR7ST9NDYFWysJtw59a46vvNaECEUbZ3Ysb5rcgT7mdAdl3D_6FAyt7rZZXhM4xQXFfWIzH0i0whoOSXyD6FKIh5hy43Vb13FFuwXvdJALLRtHI83b45cT02eWu4eofqAyKvTC_hklSZbWAkymKdXcq7bkjp7_v-GCF7xLkF6X3ghmnMMtPRoXkz0Nc9xhLZgl3p7oM8j7hBcxybWyDYrZqj3TD9ep84Z_FTP2q4rIsQn9R3cap12F8VEgjJkbApgPEpXLNzbWuk9EctD_jOW86eacJKIY_VSa_Lm9Cte_aSw4wVOmuAwyQD-Xlaqp6ed9jLGSEPGDlriUgAviyliluQ0GaH0kqLOSTfyi-wpHGQ4Re-x7kKuJSJVmtPEk8bPaMowpyR_r44DtIeDebdCnZTmvRjzmmg7d7EBnRjvvSY7XH4Sk6cxyWCsCw-u65DO_mNEv5hYyBOSgcdrPMVPy-ID-D-3KbmvHX3R5bDTsvCwJxPsSRamI-wCtoT2EWYkxf2-FgdJfq8EaRamngTjtInGSZhnLOu22H3uuOf2ptsDf2ls3bhEclR9y8lWKmM5NXdyyyX0Hm3U5E8gDPQTEE13X2qnXcZzfqOmbrP2B8iftOqSnZ80-kTk9lSTn8fyfgmWkwF7Epa9fYy73EurG8Nf4BGqlbQPVnue-qXqPcGaC3h6Mxb207yqkfzfDWzqSU-3hau_a25hM2zkRp0YVKQRdsNAgIWfdDxEifcirZQ0zd7FquWvULt2ghmt67lR81b9OpdaMZKxzFO-zFO-BSnSBf4RwNHeawgdXMl_ST7RyuXT87Bd-zWmdEYmnOQ0XWBPpnEGSiNgSRQVY5keXAK_fHr2ET_Bnngbj1-3ATmDnZA8inxvNs7qaBKziCw86GvtSD3YQL-3BNpY-EW79nM8VyQhCx9s4YNNFlmU-r6kO0q8d7NICh7cwYoX56W7rOJUUZlFnifGoSdQkoVV7AnUQz_K9eK2Yu_EeCf3Ra06DuO4in1Bosmevwzz4-bdC3ejxNbf9feuanoScDgl6JKls4eOncNZhLmnMhhPgGHAMRpoXUXPrcGNd3t7IsRXoFb1IfsEyklQcWP0rmcUdgrENH8BfTKBw7HnBauU5Zh1x-3HcYfTwo1u2WprO5trPXu7eydClIR-21TSIT1qRDd3rx2raKX2eyLZ1HxPrsoh1qg2lBLhRZljBD1El9998DA6IFoetjddlwDnguxLRgKcH6nCC6GcghToL1WeXo9keioYkfBDp4KPjXwiFYg3j84fL92lDg4jEnq6n06VrCKA_peVZLLdOqsNfo5SYZwBOUtc63vJu-g4sOk56klH1-BcMvuDpsvJceWv2d-fC1ukSjMgnmLlE37iqGT_lJ-_VGnOk_OXKj9xY8-l8e-c9EEfasKdKvSnSx_ls1ea38pqFpXe0Qle-KzGYUiScxLcjp69JOFEdnBuNX4jq5dLqsowDol3aIOL6feHmIUd5iEbGeRo3c3y3SnjuYD-gfwjjZnngw9f9QYwEcExcjA-MBoQHHuDecdReVJgVoRos3H0bBx5duMSglZK5Iampgnwup3FvBkGtQnwWta2Z_Zdp_kuiJfpIoiXUXacFU9nhSREbR8uuZ1O1D260Wft6HPqhsNuUHx0sf5HrWFQT5RTUpwcPM4LB_s49vQDVESyFHWjfoj17JjbDqp-vCXQfeGu-o0Dor3SV4QLYOg7tzsEr9wpDgOUh27CxgCavSCrkAFAfJTEF-NLF4d7D1fsOmZFXJAruI7yMEwWuIjw1e46hDymLKMQx1mYsWqR5qTKKpbROMpIkV3xaxziOIpwGGEcpXjOElylJY5LVrGK5jRIQtgTLuZO2-dKb6_aewXXOV6kxZUgJQgzXFjR1-0VhLLZmiAJBTfWHLtZbkV7teXp4f5x9jVIb4P0prsREaS37fd0LrfDFZXyDbVfzbu7CpOLH1eNFtf__X2IFvp_AgAA__8lUtDQ">