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

    <tr>
        <th>Summary</th>
        <td>
            Error while trying to spill R0 from class IntRegs
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:Hexagon,
            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 R0 from class IntRegs: 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 0x0000556028485fbf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x3586fbf)
 #1 0x0000556028483714 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f50a3cb1420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f50a377e00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f50a375d859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00005560256d6a6a llvm::SuffixTree::insertLeaf(llvm::SuffixTreeInternalNode&, unsigned int, unsigned int) (.cold) SuffixTree.cpp:0:0
 #6 0x000055602791d5a5 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+0x2a1e5a5)
 #7 0x000055602791de21 llvm::RegScavenger::scavengeRegisterBackwards(llvm::TargetRegisterClass const&, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, bool, int, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2a1ee21)
 #8 0x000055602791ee51 scavengeFrameVirtualRegsInBlock(llvm::MachineRegisterInfo&, llvm::RegScavenger&, llvm::MachineBasicBlock&) RegisterScavenging.cpp:0:0
 #9 0x000055602791f28b llvm::scavengeFrameVirtualRegs(llvm::MachineFunction&, llvm::RegScavenger&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2a2028b)
#10 0x0000556027883fb8 (anonymous namespace)::PEI::runOnMachineFunction(llvm::MachineFunction&) PrologEpilogInserter.cpp:0:0
#11 0x00005560277148ce llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#12 0x0000556027cab3f1 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2dac3f1)
#13 0x0000556027cab639 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2dac639)
#14 0x0000556027cabeb2 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2daceb2)
#15 0x0000556025793744 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
```

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

define i64 @f(i1 %0, i1 %1, float %2, ptr %G, ptr %G.9, i1 %C4, ptr %G2, ptr %A9, i64 %LGV.pre, i64 %LGV1, ptr %G7, i64 %B11) {
BB:
  %A91 = alloca i1, i32 0, align 1
  br label %BB1

BB1:                                              ; preds = %BB6, %BB1, %BB
  store i16 0, ptr %G.9, align 2
  br i1 %C4, label %BB1, label %BB5

BB5:                                              ; preds = %BB1
  store ptr %G2, ptr %G, align 8
  %C1 = icmp ugt i64 %LGV.pre, 0
  store i16 0, ptr %A91, align 2
  br label %BB2

BB2: ; preds = %BB2, %BB5
  store i1 false, ptr %G7, align 1
  store i1 %1, ptr %A9, align 1
  store i1 %0, ptr %G, align 1
  br i1 %C1, label %BB2, label %BB6

BB6: ; preds = %BB2
  %C3 = fcmp uge float 0.000000e+00, %2
  br i1 %C3, label %BB1, label %BB3

BB3: ; preds = %BB6
  %B3 = mul i64 %B11, %LGV1
  ret i64 %B3
}
```

https://godbolt.org/z/nrKMG4o4d
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WFtv6yoW_jXkBSXC4OtDHpK02aeadk7Vbu3XCmPsMCVgAT5Nz68fgZ3ETrNvM9WJEgUwfOtbF9bCUGtFozhfgmQNkpsZ7dxOmyXb1dS6Wamr9yVI0fBFNwCt7u-_PcDbp6c_nwBZwVtjtIFvOyE5dOZdqAY6DW0rpIRPCNZG7yGT1Fp4p9wTb6xftKFKaQcto39x1XBoeCOs4wa-CbfTnYNUQb7npuGKvQ9gVmoHcNRzeLy_XT3fQtuVe-EghWXXQMNbbZyXvnOu9XIA3gK8bYTbdeWC6T3AWyn_Ov7NW6P_w5kDeCus7bgFeAupqqBQTHYVh27HITPU7mBJ2aszlPFFL_7ZUfYKq27feilhCC0AKh6NbgzdQ2qabs-VC8oCvNWtl8L0vhWSmzk_tFIbbvyYpKqZU2u5cUIrO3emU68Ab0uhAk8G59pD0Lb1QJ1rO7ewcH7I0zm1-7l9V44eALkRynEJAdlY3RnGAbntiUWe2FOnlHdN6x0BcLbtFPPy4KMfeKCKNp5OBrWCe111kvtZEzCcDcrja4CPRkvddBzg7W0rQhPeqUErCHAKt4buOdwKRaX4m_rhQV595OIlxqj2f0EQBJggiA4IIZQkKcJ5nCd1WcPgRLICZGXfbd94NEK54Jav3k8A5-dJhr69aOsMp3uAU4A3UCgHcAEBzv9P5wC8RgeS5Gld1gAXZ97RBW-SRTF8Fo2i8g-qKunx84FGP2wXrPXhhMLvBIQHoKxOECWsjGKM4MuL4dZpw1-MG7SQogR4e8jTlzSeS6G6w7xRXf-gdTvDabWweoEC4yiOMZrwJRMxWcYRKqGhwvJfwGceOQ3IMUGonCDHU-SkypMC0lL_EvMRMsZ5UkyQk7GNk7RKaUpHsfHc1bU4fDWc930RwvGe03oSHedpd8pxo6j8t674ECidCtmx6iPmsh8iaMG0rIIbT0DXPZmO6WZFVCU0GdF94s3zkA_NENw-7024Pg150lM5j36lpuHu-GwTki3TyrpxtI8XPFC2E4rfKevMuvPReOe4oU4bQDbXp3mAmkrbp4JPBUs_cStiGvGEJpMwyS7tznH0Y7sP3aNF15S9vlFT2Ykvfmb1TzV3qbUcubLvfqrVOI4mVssvrMZ5Ep0Kdsjl34RxHZW-pt-ptdTsdWKfQZ2jge5UrT9YZmL775htTa1gA3wIlSPisFKo5vp-Ky40qHFejkvHd3S5psSxXP5cgU_0CUY4P6dSX1MmxTDLc1KXuZdHlVbve91ZqOie2zYUwGIojLd3QxXs1J_qgz4_0bWAfWHva3pf0Ln5aG_PblLysiyKc8Y_uvMI7w8eI2JXGV1Q8cm2pcb5IlbAK3jXeeEJL0ZLUo_3__bRLz0egX6b0af4uqKM1NHE1-SSdUqKX2D9EA5vU78OQ5_NOCXFhHF8yZiXeMRY8oay9yEoz9zv9q088f9HePMST3hPjxFZQbI4hoOMkznZjhqAV-E7TgD-ZWijleMHNzCVkl2Jw-kr1MVggAtDLhQV6Ixo_RGc3ECA8Y4faKPVvFOvSr-p8RkJj_EqXgvFoUhj2J-jcxFBgBMUKkdoRqGwSE394SvBvtc649tfxu1FcV6yicdPxktW_SwvDif3X74tWsOnI9F4aTZ6to6i4NVs3VNfr08vUrCHjoL2VErNKBQBSPjDsG9QKRoFo-P80kBJS__yg5P1OhqbxHfJCv7WB5A1bA2v7GD_ZL0OWX9AP7aO0sM5HIoo7blNTdgzxSOmY6NOWE_7yVSL5DO0iKaUr7n0y5l0PnLHpveGYPsWdo274nP0Y3Osiui6OUYq46nKOLw7f9QCnzyQXMocjkyXMXcRLqfZx_0wCecfTEbXDRV99O6lN_FFP52qmn5X1ZELSBivexfwYROjBQof7rMbGixzJdzIT8KNTAmR7xBKR4TWPaF9JyebenPa-sNUw0_xchKT3fwgLV7c3uiq1NIttGkA3v4N8FaZfz18iXVczaolqQpS0BlfRmmexZiQDM12yySJSMFxTAnFRZ6hnEeUsYrTuKqKtKxmYokRJijFGOUxTtAizXlGsopzWsQJyRIQI76nQi58avayZ-GKaJmSOE5nwXA23JhhXFL2ylUFyOqPPk_7rIw3AOOhSoQrJD-Y3MzMMtw8lV1jQYyksM6eRTjhJF_-9oXarDNy-b9feQWV_hsAAP__R-3iSA">