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

    <tr>
        <th>Summary</th>
        <td>
            LLVM ERROR: Error while trying to spill V0_64 from class GPR64: Cannot scavenge register without an emergency spill slot!
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:MIPS,
            llvm:crash
      </td>
    </tr>

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

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

<pre>
    ```
LLVM ERROR: Error while trying to spill V0_64 from class GPR64: Cannot scavenge register without an emergency spill slot!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel <source>
1.      Running pass 'Function Pass Manager' on module '<source>'.
2.      Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@f'
 #0 0x0000558b0b2e6e0f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3575e0f)
 #1 0x0000558b0b2e4564 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f510049e420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f50fff6b00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f50fff4a859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x0000558b0853cbac llvm::SuffixTree::insertLeaf(llvm::SuffixTreeInternalNode&, unsigned int, unsigned int) (.cold) SuffixTree.cpp:0:0
 #6 0x0000558b0a77f585 llvm::RegScavenger::spill(llvm::Register, llvm::TargetRegisterClass const&, int, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2a0e585)
 #7 0x0000558b0a77fe39 llvm::RegScavenger::scavengeRegisterBackwards(llvm::TargetRegisterClass const&, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, bool, int, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2a0ee39)
 #8 0x0000558b0a780ea1 scavengeFrameVirtualRegsInBlock(llvm::MachineRegisterInfo&, llvm::RegScavenger&, llvm::MachineBasicBlock&) RegisterScavenging.cpp:0:0
 #9 0x0000558b0a7812db llvm::scavengeFrameVirtualRegs(llvm::MachineFunction&, llvm::RegScavenger&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2a102db)
#10 0x0000558b0a6e5c58 (anonymous namespace)::PEI::runOnMachineFunction(llvm::MachineFunction&) PrologEpilogInserter.cpp:0:0
#11 0x0000558b0a576dae llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#12 0x0000558b0ab0d081 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2d9c081)
#13 0x0000558b0ab0d2c9 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2d9c2c9)
#14 0x0000558b0ab0db42 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2d9cb42)
#15 0x0000558b085f9ca4 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#16 0x0000558b08541fa6 main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x7d0fa6)
#17 0x00007f50fff4c083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#18 0x0000558b085eff9e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x87ef9e)
Compiler returned: 139
```

```llvm
target triple = "mips64-unknown-linux-gnu"

@G = external global double
@G.1 = external global i1
@G.2 = external global i1
@G.3 = external global i1
@G.4 = external global i1
@G.5 = external global i1
@G.6 = external global i16
@G.7 = external global float
@G.8 = external global i32
@G.9 = external global i32
@G.10 = external global ptr
@G.11 = external global i1
@G.12 = external global i16
@G.13 = external global i16
@G.14 = external global i8
@G.15 = external global i1
@G.16 = external global i1
@G.17 = external global float
@G.18 = external global i8

define void @f() {
BB:
  %A26 = alloca i1, align 1
 %L2 = load i64, ptr poison, align 4
  %LGV3 = load i32, ptr @G.9, align 4
  %L1 = load i32, ptr poison, align 4
  %L = load float, ptr poison, align 4
  %B12 = mul i32 %L1, %LGV3
  %C41 = icmp ne i64 %L2, 0
 %C21 = fcmp ult float %L, 0.000000e+00
  %LGV = load i1, ptr @G.4, align 1
  %C2 = icmp ne i32 42, %B12
  %C3 = icmp slt i1 %C21, %C41
  %C = icmp ugt i1 %C2, %C3
  %C1 = icmp sle i1 %C2, %C
  %C5 = icmp uge i1 %LGV, %C
  br label %BB3

BB3: ; preds = %BB7, %BB
  %C28 = icmp slt i1 %C1, %C21
  %C18 = icmp uge i1 %C2, %C28
  store i1 false, ptr @G.16, align 1
  br label %BB5

BB5:                                              ; preds = %BB5, %BB3
  %C44 = icmp ult i32 42, %B12
  store i1 %C44, ptr poison, align 1
  %B24 = lshr i16 -32768, poison
  %C10 = icmp ugt i1 %C3, %C
 %B19 = add i1 %C10, %C18
  %C14 = icmp uge i1 %C10, poison
  store i1 false, ptr @G.3, align 1
  store i16 %B24, ptr @G.13, align 2
  br i1 %C10, label %BB5, label %BB7

BB7: ; preds = %BB5
  %C24 = icmp sgt i1 %C18, %C14
  %C39 = icmp sle i1 %C24, %C24
  %B21 = or i1 %C24, %B19
  %C42 = icmp uge i1 %C5, true
  %G10 = getelementptr i8, ptr %A26, i16 32767
  store i1 %C24, ptr @G.4, align 1
  store i1 %B19, ptr %G10, align 1
  store i1 %B21, ptr poison, align 1
  store i1 %C39, ptr %A26, align 1
  store i1 %C42, ptr undef, align 1
  br i1 %C3, label %BB3, label %BB4

BB4: ; preds = %BB4, %BB7
  br label %BB4
}
```

https://godbolt.org/z/nvv6GP8Td
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWW9P4z4S_jThjdXKsfP3RV_QQjkk9n4IVvsWOYmT-nDsyHYW-H36k5O0tUsK7B26W7GCuI9nnnlmMuM0RGvWCEpXQbwO4qsL0pudVKtyVxNtLgpZva2CBE4_8CqAl3d3v36A64eHvx4CfAmulZIKvOwYp8CoNyYaYCTQHeMc_IJPSQRqJVtQcqI1uLl_SCK7a0OEkAbokvymoqFA0YZpQxV4YWYnewOIALSlqqGifJusaS5NgMKRxP3d9eXjNdB90TIDCCj6BijaSWWs-50xnQ7wZYC2Ado2zOz6YlnKNkBbzn_vfy06Jf9FSxOgLdO6pzpAW0BEBZgoeV9RYHYUlIroHShI-WwUKelydP9oSPkMqr7trJdhCS4DmN8r2SjSAqKavqXCWBIgQFvZWS-lbDvGqVrQ145LRZVd40Q0C6I1VYZJoRdG9eI5QNuCiYFnCRbSmiBdZw31puvNUoPFa5YsiG4X-k0Y8hrgKyYM5SDAGy17VdIAX4_EQkvsoRfC5qazaQhQuu1Faf2Be7vwgwjSWDopkAK0suo5tSjPGEqn4NGcwXsluWx6GqDtdceGP8GtmKICAUrAVpGWgi0ThLO_iV2e_NV7LtZjBGv7a3AEAoQhgK8QQhjHWQELRBMKazAkEV8G-FK_6fGPe8WEGdLy0-YpQNkRpMjLk9RGUdIGKAnQBjBhApSDAGX_ZXICtIavOE5jannnR97hCe8oTiLwyBpB-D-IqLi1n000xmW9LDtbTnD4fzCEJkNpHYcQRjmNEARPT4pqIxV9UmaKgrMiQNvXLHlKogVnon9dNKIfP-jMTlFSLbVcwoFxGEUIenzx0Q2s6zopICyAIkzTL9gvreVksBxhCAvPcuRbjkgW54AU8kvMHcsIZXHuWY5djbMYlwUpndp47Ouavf5UlI7XbCjHO0pqrzqOsFthqBKE_1NWdCqUXgztsRor5vR6qKBlKXk1pPFgaD6TiUuXpGkdZ7FD94E2j1M_VFNx277ncX2Y-qSlclz9SVRDzf6zzdBqSym0cavd3fCDlDsm6K3QRq17W423hipipArwZh5mDdSE67EVfKux5BtvRUQgjbPYK5P0VHeK8491ny73iq5J-fxCVKW9XHym-rfKXUjJnVSOl9-qGsX-zZX5qmWQkvAwsIde_osp0xP-QBt9K9Zcls-ePlM4e4FuRS3fKeNpf0a2NdGsnMwPpbK3OO1kopm_3_KTCEJUFe7oOBPLXBD7cfl5AN-YkxCi6thK7UzxhiFJaFzGmfVHhBRvrew1EKSluhsGYD4NxuvbaQr24i_xLp5PYs3BONjHmT4OdKre623ZeSOPxGlSEfo-nXvz9uDhEJtldELFNtuOKGOHWA5m7M3zQh6vAlYwCx1e23u7dX8E-mNG35LrKi9hFnq5xqesUZl_gfWP4fDm53Va-m7GqMw9xtEp4yJCDmNOG1K-TUV55H7bdvzA_3_Cu4iQx_vkGFHnJYnA5OMgZ7kjKkCXw4_bAOzT0EYKQ1_NxJTzcr4OE99PFNYkAS1h4ruCSytYk8SLLT05fJUww-DpyZ6snrQhyjw5BL56EItghj0vmR8ZreucgtH-d8WWpbTO6cHrZrIEFDW9ErSyD1oh3nPyn1hPFofkDUtmGOHAKNbZBx58BQKEWtbpJFr04lnIF-HqgDxzEbwZttDX8dQIGi4LwkEl-4LTI2gZzsJY6EDQ5xD8OST6HBJ_DknOQBIHk85iai6JcVDZvCWMHEz-BUwIZ0GdUS7oCzKH53R2YwvPKe2BzmiduZgviB2eU9vFfE3t8IzcmVu1Fa2ZoOC3ZBUYn7Wzobum6_Hz9frwhQYAAYov0UiQcC5LYnmhDSCcNQKEh5NWfDfqyiWpAEsii-mMAp1k2o7K_Y7IMXx38ws7mzDabxqr4symcHbLh36OO0bBvrBnPdVJ2w-VOHq20Im3A91EIyVWth0Q1EY_CmLhx7NovEEjrra4npuRzAAdkEs4_KO210FfJifk0BMpep-L0ZXPCCMQoYn9OkQuEh-RmhvAwonqhN5Ent0juG-O4D3WUyV0DdN3WBcau2b30LubX6fYQgFOCsqHMNbYLWp7iS9BgNegU7TSUyeP1-t0H_faEyibjfsQNvLCDrM5hsdgULZHD9_I2M_HJzc3V2Eykyw_pNgPKbYh_dG_mfjjQ_x-0UZOSFaAMzVyCGjcdO7eceVao9E21ztleyZYYJQm2bB13OZKC2drCp_kfiA1DgpSVYd0wT0szDyj0Wy-RrjP4YOE4Znw9vBkCtTPsLMDORn23Hvp9q9TP_3pmYqOvUJ2QtVH_cLsoEzk3e75_G0ZHUrZ64JTy5LqHXAd5l45oVnFhwiN6qmDvZlS3lBDOW2pMFZAlh2kHEbO8E1HmABbOulsMZ6IP9cKXbwlfPRwMybjIzwKPy12jw_O30fwET46DK9eVLSebw7u7eD1Pv868isnOlM5h-St0_kGtLeTXn1wij55tSKrQnKzlKoJ0PbvAG3F79_JzX32s7qoVrjKcU4u6CpMsiSPYYiTi90qQpjQOIUY0yyHJMkgzmkVFjDJ7UNucsFWCCIMkzBBYRjjZFnmuCRFFpcJrpKC5kEEaUsYX9qTvPV9Mby_WSUYx-nFEJEe3mchVJDymQr7dPDj9v7RHuHRJkBoen4bXu7YxfjqQq2Gd0JF3-gggpxpo4_2DTOcrv7Pb74uesVX__mrrUGdfwcAAP__CJgbrQ">