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

    <tr>
        <th>Summary</th>
        <td>
            [SPIRV] LLVM 18 regression: Assertion failed: ((MI->getOpcode() == SPIRV::OpVariable && i == 3) || Reg2Entry.count(RegOp))
        </td>
    </tr>

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

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

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

<pre>
    Works with LLVM17, using `--print-after-all` confirms that the [passes done are different](https://github.com/ldc-developers/ldc/pull/4604#issuecomment-2028019258)
```
$llc ./addrspace_new_ocl220_64.ll
Assertion failed: ((MI->getOpcode() == SPIRV::OpVariable && i == 3) || Reg2Entry.count(RegOp)), function buildDepsGraph, file SPIRVDuplicatesTracker.cpp, line 59.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ../../../llvm/llvm-build/bin/llc ./addrspace_new_ocl220_64.ll
1.      Running pass 'SPIRV module analysis' on module './addrspace_new_ocl220_64.ll'.
 #0 0x0000000105027984 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x102cab984)
 #1 0x0000000105027f34 PrintStackTraceSignalHandler(void*) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x102cabf34)
 #2 0x0000000105025bfc llvm::sys::RunSignalHandlers() (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x102ca9bfc)
 #3 0x0000000105029050 SignalHandler(int) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x102cad050)
 #4 0x000000018fa1aa24 (/usr/lib/system/libsystem_platform.dylib+0x18042ea24)
 #5 0x000000018f9ebc28 (/usr/lib/system/libsystem_pthread.dylib+0x1803ffc28)
 #6 0x000000018f8f9ae8 (/usr/lib/system/libsystem_c.dylib+0x18030dae8)
 #7 0x000000018f8f8e44 (/usr/lib/system/libsystem_c.dylib+0x18030ce44)
 #8 0x0000000102ae2b9c llvm::SPIRVGeneralDuplicatesTracker::buildDepsGraph(std::__1::vector<llvm::SPIRV::DTSortableEntry*, std::__1::allocator<llvm::SPIRV::DTSortableEntry*>>&, llvm::MachineModuleInfo*) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x100766b9c)
 #9 0x0000000102b3100c llvm::SPIRVGlobalRegistry::buildDepsGraph(std::__1::vector<llvm::SPIRV::DTSortableEntry*, std::__1::allocator<llvm::SPIRV::DTSortableEntry*>>&, llvm::MachineModuleInfo*) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x1007b500c)
#10 0x0000000102b30d3c llvm::SPIRVModuleAnalysis::processDefInstrs(llvm::Module const&) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x1007b4d3c)
#11 0x0000000102b34eec llvm::SPIRVModuleAnalysis::runOnModule(llvm::Module&) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x1007b8eec)
#12 0x00000001041c5930 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x101e49930)
#13 0x00000001041c54ac llvm::legacy::PassManagerImpl::run(llvm::Module&) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x101e494ac)
#14 0x00000001041cc4b0 llvm::legacy::PassManager::run(llvm::Module&) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x101e504b0)
#15 0x000000010238468c compileModule(char**, llvm::LLVMContext&) (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x10000868c)
#16 0x000000010238293c main (/Users/nicholaswilson/d/llvm/llvm-build/bin/llc+0x10000693c)
#17 0x000000018f693f28
zsh: abort      ../../../llvm/llvm-build/bin/llc ./addrspace_new_ocl220_64.ll
```
The file in question:
```llvm
; ModuleID = 'dcomputeTargetOCL'
[llvm18.txt](https://github.com/llvm/llvm-project/files/14831992/llvm18.txt)

source_filename = "dcomputeTargetOCL"
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024"
target triple = "spirv64-unknown-unknown"

%"ldc.dcompute.Pointer!(AddrSpace.Global, float).Pointer" = type { ptr addrspace(1) }

; [#uses = 0]
define spir_func void @_D26dcompute_cl_addrspaces_new3fooFS3ldc8dcompute__T7PointerVEQBaQz9AddrSpacei1TfZQBeZv(ptr addrspace(1) %f_arg) {
  %f = alloca %"ldc.dcompute.Pointer!(AddrSpace.Global, float).Pointer", align 8 ; [#uses = 2, size/byte = 8]
  %g = alloca float, align 4                      ; [#uses = 1, size/byte = 4]
  %1 = getelementptr inbounds %"ldc.dcompute.Pointer!(AddrSpace.Global, float).Pointer", ptr %f, i32 0, i32 0 ; [#uses = 1, type = ptr]
  store ptr addrspace(1) %f_arg, ptr %1, align 8
  %2 = getelementptr inbounds %"ldc.dcompute.Pointer!(AddrSpace.Global, float).Pointer", ptr %f, i32 0, i32 0 ; [#uses = 1, type = ptr]
  %3 = load ptr addrspace(1), ptr %2, align 8     ; [#uses = 1]
  %4 = load float, ptr addrspace(1) %3, align 4 ; [#uses = 1]
  store float %4, ptr %g, align 4
  ret void
}

!opencl.spir.version = !{!0}
!opencl.ocl.version = !{!1}

!0 = !{i32 1, i32 2}
!1 = !{i32 2, i32 2}
```
Attached is the output of `llc -O0 --print-after-all ./addrspace_new_ocl220_64.ll`
[llvm18.txt](https://github.com/llvm/llvm-project/files/14832000/llvm18.txt)

Please let me know if there is any thing else I need to do, thanks!

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWd9v4yr2_2voC0qEwXbshz6kzeR-K81oett-Z6X7EmF8nLAl4AWcTu9fvwInbpxm7nRX0WhX2ip1CBzO-ZwfHDiYOyfXGuAaZTcoW1zxzm-MvfYbeJHKGc29sVeVqV-v_2bss8Mv0m_w58_fviQzRG9x56ReY5STyaS1UvsJbzzYCVcK5QQLoxtptw77DffYbwCj7KblzoHDtdGAuQVcy6YBC9qjbIFosfG-dYjNEV0iulxLv-mqqTBbRJeqFpMadqBMC9b1HYgu204pRJdpTlJEmXSuA2G2W9B-QgktSFLSrEC0RGSByBzlZP_pf9JUKYGniC55XVvXcgErDS8rIxSlZJWnU6V60rlzYL00GjdcKqgRm2NEC0SLL3cTxD6twX9thakhdpYYsQViC_x4f_fwLSjE5l_bb9xKXinAiOaI5lgeqFicMbtFs1v8AGv6SXv7OhWm0x7R4gHWX9ugQvjc4qbTIgKpOqnqBbTuN8vbTRySCnqRi65VUnAP7sly8Qx2Kto2kCipAWfltNfq_vOn-eMn7LpqKz3muOrW2EJrrMfe4L_yhtodviatNX8H4RFdRvMH32Cuayy1UF0N0fXCcrfBFRfP3nIBe_GPnotnXHfbNkiJXWSKSHlvzdryLeZ23QVXBhB4Gtz09jhGEC2B6LKSOnZ9zKVJEPXQaR2iOAQmRnQWrYe3pu4UYK65enXSITrDRh96EZ39hH0giCIwooxg8p30fwnJCJ2VRYoj-hgW7tX1jfuwhKJFgstCHL0RWf6yMs5b4NsYO7dYhtAo-xBc_r_rl4SWYmMUd_3qRXRZ_8xQiN6Q7wmhgldlkQ7rJOBOTnE3LMUnIB_lWnP1f1zXCiyixc7IGtH5hZE1bIyMniDLqkacs-hDp0cA3WFtXgxaWTViBI2dQCtJRvCplS7uu5pkZAQjPYJRNDzhnKZ7eZ2zYbqsEF26V-dh2__s26tWcd8Yu53Wr5EmiChISoHTsROykYgSKkGLD4rwGwu8HktgTSNoMZKQjyQUTcnhgxLECW9Scxjznp3wLiD9oIHe8RaQji1THMcA5UCr8jg8Y4b5DTRYrt6l6Z7kNLMXztf9yGqV9I0dCG8sYrcnjPvm4unRWB_2mriVxCV5i99z4UoZwf81RuxT-PRZ6G3OFy42UsOXmCLvdGMumwbILM-rcrzWypGdK5YQ8t7OylRcPcBaugD_f9b9gXWrjJA364bsT06sS2r2zro9nvlhl4wDrTUCnFtAc6edjzn3SI9-BxVGOx-VvKQKac3GKiQnKqQAH1LBdvqr7gfOoL847gJgjHu0v6WJyEpGgjyujX7dms5hzbcQzx5hXo_t_p4794Vrvj5kkV-pRgJpWTIyUoOdqpHyY_MrWHOxX5JH2O-2rRrw_xLcKR-bPz3BLdKK_Bz3r8SckbQa2zobhTor0rwQWJhtKxUMISA23MbEMR9nl1DR3Rrt4fulFyUhRV6MrZufIKUlE3jLpb6g0Lw8yQTj7T4vWUOLfvRPtwnFBa9CzRP_Ll5nnBSdTxvoCzWp8T86cKGWG8qfgTaK7bvYDd4n_kUoGEP9UQfXdh6euA2F5-1nRGd76uwmTE2Kqf_-gaL6bBkX0AUXJGnBkrKke4o9z8Gu8elMZwWswpSQlPYA6RmAtJ_gYw-uueeKv5rOH6bAJFSBefr2mMiwkRbhfyKLt2aSIzbfPyaSUcTm-8dEjuY3o7FmNLYbcdnR9IhyN5q3S4vjeWMuZWRAi_452Q3NoaMMbGiW98_JbmgeOrIkUAzPyS4hEc3x14n1vJWtGoztWml3eTrp9LM2L_rwPUw6rIMMUapqMT04Z3pvpPahJEkQLeZ1bR9DGE_7Q1O8UFCGB4-_UdIo1L-2gNHsBrfe4iH-ES2S_iZjMRLMbjDKbhBlnQMX55MQmXGwhkZqwEGFVdNpgUMJiVFKVguaH4CuhFoNUlxYZqwxZvnIVC2KgWj1NNvD_Pbp9xv--5_loJJMnpo_fr-BP3aIFucx06xZcbvu8d_sT5mxOyLuz3L4QkYM3VzJtcYFPmOeOO7knxByzavvHV0MNouw1sew9iIOTFN89u-MpOScpHQsKYmda_CgYAvaB_tJXZlO1-6SBgl8g73j9UYo8ofGD5H3ccgWYe4RaOeNhR_E5uDnQWBy5I0jtel_ndqIZix2K8Prs-ofyRvF4A-jY8Q8fWM-BNyPjMyOo_EnrHt3RZZRzBHK9RGbA7kFH7PEPrucJBuamBa0UNOQUqY7sE4avc-USVjZNCFvcwZqI9R54uS9AHJEERyVHDxGjxknJ1T0DNX4ZDD3nosN1Fi6eGlqOt92HpsGxwOBwJOvBL-7a__ZGWS47L7wyYASQv7qZHCvgDvACjzeAg47EpZN0MtCUJDrV-w3Uq8xKAf4DmuAGnuDaxNDfMP1swvWi8yu6mtWl6zkV3CdzBJKWD4jxdXmmlY5rZkAkmZVBU0zY0AYhZTxNKdNyq7kNSU0JSmhJEszUkwbkvOK1-GnKIE0KCWw5VJNgyZTY9dX8Rr7upixJLtSvALl4gsSSjW84DgYlm62uLLX-2Ph2qGUKOm8e-PipVfxzUpf8GeL-OYEJwW2sLbgXH_uw_8ZbxauOquu__0L_2isfwYAAP__6GO1uQ">