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

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

    <tr>
      <th>Labels</th>
      <td>
            backend:RISC-V,
            crash
      </td>
    </tr>

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

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

<pre>
    ```console
LLVM ERROR: Error while trying to spill X10 from class GPR: 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: bin/llc -mtriple=riscv64 reduced.bc
1.      Running pass 'Function Pass Manager' on module 'reduced.bc'.
2.      Running pass 'Prologue/Epilogue Insertion & Frame Finalization' on function '@f'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  llc       0x000055555a1f0f3b __interceptor_backtrace + 91
1  llc       0x0000555563a9b619 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 313
2  llc 0x0000555563a936a5 llvm::sys::RunSignalHandlers() + 405
3  llc 0x0000555563a9ce43
4  libc.so.6 0x00007ffff7a39520
5  libc.so.6 0x00007ffff7a8da7c pthread_kill + 300
6  libc.so.6 0x00007ffff7a39476 raise + 22
7  libc.so.6 0x00007ffff7a1f7f3 abort + 211
8  llc 0x0000555563866b9f llvm::report_fatal_error(llvm::Twine const&, bool) + 1023
9  llc       0x00005555613b8437 llvm::RegScavenger::spill(llvm::Register, llvm::TargetRegisterClass const&, int, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&) + 6775
10 llc       0x00005555613ba874 llvm::RegScavenger::scavengeRegisterBackwards(llvm::TargetRegisterClass const&, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, bool, int, bool) + 8548
11 llc       0x00005555613bdf98
12 llc 0x00005555613bc935
13 llc       0x00005555613bb682 llvm::scavengeFrameVirtualRegs(llvm::MachineFunction&, llvm::RegScavenger&) + 322
14 llc       0x0000555561183302
15 llc       0x0000555560c55076 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 2774
16 llc 0x0000555561fe9ef2 llvm::FPPassManager::runOnFunction(llvm::Function&) + 2562
17 llc       0x00005555620087b3 llvm::FPPassManager::runOnModule(llvm::Module&) + 147
18 llc 0x0000555561fec096 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 6662
19 llc       0x000055555a28b638 main + 35080
```

```llvm
target triple = "riscv64"

define i1 @f(i16 %L11, i1 %L4, ptr %A4, i1 %L5, ptr %G.11, ptr %G.9, i1 %0, i8 %LGV5, ptr %G.1, ptr %G, i64 %B, ptr %G5, ptr %G.2, i1 %C4, ptr %G.5, ptr %G8, i64 %LGV3, ptr %RP, i32 %L7, ptr %G11, ptr %G.12, ptr %G4) {
  %C9 = icmp ule i1 %L4, false
  %LGV2 = load i64, ptr null, align 4
  %A = alloca ptr, i32 0, align 8
  %C8 = icmp ult i64 %LGV2, 1
  %G41 = getelementptr i64, ptr %A, i16 256
  %G6 = getelementptr i16, ptr %G41, i1 true
  %B1 = ashr i64 1, %B
  %G9 = getelementptr ptr, ptr %G4, i1 %0
  store ptr %G5, ptr %G.2, align 8
  store i1 %L4, ptr %G.5, align 1
  store ptr %G8, ptr null, align 8
  %C5 = icmp sgt i64 %B1, %LGV3
  store i64 %B, ptr %G6, align 4
  store i1 %0, ptr %G.1, align 1
  store i64 0, ptr %G9, align 4
  store i1 %C4, ptr %A4, align 1
  store i1 %C8, ptr null, align 1
  store ptr %G11, ptr %RP, align 8
  store ptr null, ptr %G.1, align 8
  store i1 %L5, ptr null, align 1
  store i1 %C5, ptr %G, align 1
  store i8 %LGV5, ptr null, align 1
  store i1 true, ptr %G.12, align 1
  store i1 %C9, ptr %G.9, align 1
  store i32 %L7, ptr null, align 4
  store i16 %L11, ptr %G.11, align 2
  ret i1 %0
}
```

https://godbolt.org/z/qbvvvcTfo
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWF9v6yoS_zTkBZ0IsI3thzz0X3ortTpVelTt7kuFbeywh0AWcLs9n34FthM7cXqurq60UdUYmJnfzG-GgZhZKxrF-Qok1yC5XbDWbbVZlduaWbcodPW5AhR1f6VWVksO0C1AV4-Pr0_wbrP5vgHRFbwzRhv4sRWSQ2c-hWqg09DuhZTwHxjB2ugdLCWzFt4_B40bppR20JbsnauGQ8MbYR038EO4rW4dZAryHTcNV-Vnb8lK7QDBnQPPj3dXL3fQtsVOOMhg0TbQ8L02zkNvndtbEF0BsgZk3Qi3bYtlqXeArKV8H76-7Y3-Ny8dIGthbcstIGvIVAWFKmVbcei2HJaG2S0sWPnTGVbyZQf_4lj5E1btbu9RwhRawvB5NroxbAeZadodV877AQuhAmgJv-2cEXvJQXRrhC3faQwNr9qSV8ui7Czh3tKmVcpzuffEAZKuW1U6oRV89hNPTLGGG0BSqBXc6aqV3EuNrJG0d5dcsPhstNRNywFZ3-1FeIQPynITYAChcG3YjsO1UEyKX8xP94D14AwgKYhR7b9OqDkk037uCi2hYjvuYTOubGs4_NQt3LJ3DkMyOiHxixsolF8z8Pnqxx9QG2i5C7ng6l0YrTyr8J0ZCCjyhfj28s-n6--PD_-627x5FUCRL4K9FipUg3CA5Mc8Qejz0H3QfxFCKPEfhmtURwV8exPKcVPyvdPm7ZB4CMg1zPvqw_M2aMTyguI8BOQBoyv7abuHZyOUC9z88OYAyY5Chn28aesMZztAKCA3UCjvc8CMcNQnsQOdwkWUJXNwm1a9iEYx-QdTleTGApINFmOUdBajOYslj3vAGEIpinJp9ZL2Qmld13XKojwhqBNKLgplFUtLuHdbw1n19tNv4RAP6jXpF-bjlELDhO1oJ6TTSC9q4DqtI8gKv_-DBu4zlZ2HmFFa5PWItK5vvNXMMfnGfS-bZOfHh1Ac-vbn-uwUWsuBTIxIT1d-oShwVGRxlI4AN7x56Tuf6fPmO9wEddN3RI838oWZhrth7Sa01LFnoW7GCk-s3ArFH5R15rr1pfDguGFOGxDdzIt5AzWTloPo7m82RgfWaJr2NYjRRdZYlsZfs9YPBz6uWfnzg5nKTvP3G87-VrK60jgkYlwpWRJnfcz4YsxVnQ9C5LRycVSUeTTwFl20UdCMjHtCz1Jo5a_CuJbJDW-mJPUxDUfMGTUT8o95jIatieML7uAsitAglMwLoTJJUErPMzG44w-8fq-26rs6ejmKYOJ65x1J07hHpmdk1jzn9Zin9bOHGY7Vv4CW0CHOdD5OglCWFtGfwHwKx_k0Q_3UAQ_H_YmLs5ngSpSPCZW8YeVnfxQdIR92e3mA_RqO0kN4-YUTlGQFjTK4Y0J11ZGgrG_2h2tkP5xOBtgw5cJmhd0dCYLoFgJC-osSGIqt-1_x2jdmgWF3_8gEphCQ5BHjsANxGMT-ee-MH1zFo4VktHC_7HQOw_woiMJjFnTuX0-0xqMgR2P_fD2en6qQo-WbeLIykctG1h7vX6PR2uY5rEUkrKVjrZMoMBkP45DJ9LpjDwYP8kCxKHd76K-PY866rnaUfbx_JUFaalZ51wbbqpWh5TEpGgXjkcpVkGdS6pJ50cFvdBTPxt5kY2_cKPwQBx6J3sc4yDbcccn9hdB7MnLKo3dMU78xx6p0ThPTCVVDBTnTjjm47lCZ3QYwGMRCvkf28xn7ffCjVBzLq1e1Thv-VdGcENbJz1R5X0mdOJ43n80nb5KN5JgN2xyycT3EHKpy6stM8dOZyhh7js7306zj3vZENv-N4ZvzjT9vuJO-QMgF-ib7rNuPs9kZG5wLcj6ZyZ_ypXc8OW1B88Jn_et3tkPlnzeTr1zJz1vovPhp67rQQQbj465-0rA7DTJoGO6m2wqkt1-cPyevCXRVaOmW2jSArH8Bsv5P8f7-Xv6o9aJaRVUe5WzBV5jmKCMoy_Fiu4piRgihSU4jlNOiRChBCcWk4pSigsQLsSKIRCiNMKYkw3iJCSo5zWmR5inNUQlixHdMyKU_Az32IryLWNGYpOlCsoJLG17PEOJ_i3JV-dvYw8vNt1d_HpIbQEh4R-FHye3CrMKv6aJtLIiRFNbZo2knnOSr_-PLm0Vr5Oqvv50JpPwvAAD__6NqX5U">