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

    <tr>
        <th>Summary</th>
        <td>
            Regression: Hang in GreedyRA
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:codegen,
            llvm:regalloc,
            llvm:hang
      </td>
    </tr>

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

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

<pre>
    After https://github.com/llvm/llvm-project/commit/cbdccb30c23f71f20d05b19256232419e7c5e517 LLC hangs on the following snippet in greedy regalloc (run with `llc -run-pass=greedy`).
```llvm
--- |
  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
  target triple = "aarch64-none-linux-gnu"
  
  define void @foo(ptr %0, i32 %1) gc "statepoint-example" personality ptr null {
  bci_0:
 unreachable
  
  bci_19:
    unreachable
  
  bci_10:
 unreachable
  }

...
---
name:            foo
alignment: 4
exposesReturnsTwice: false
legalized: false
regBankSelected: false
selected:        false
failedISel: false
tracksRegLiveness: true
hasWinCFI:       false
callsEHReturn: false
callsUnwindInit: false
hasEHCatchret:   false
hasEHScopes: false
hasEHFunclets:   false
isOutlined:      false
debugInstrRef: false
failsVerification: false
tracksDebugUserValues: false
registers:
  - { id: 0, class: gpr64, preferred-register: '' }
  - { id: 1, class: gpr32, preferred-register: '' }
  - { id: 2, class: gpr32, preferred-register: '' }
  - { id: 3, class: gpr64all, preferred-register: '' }
  - { id: 4, class: gpr64all, preferred-register: '' }
  - { id: 5, class: gpr32all, preferred-register: '' }
liveins:
  - { reg: '$w1', virtual-reg: '%1' }
frameInfo:
 isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap: false
  hasPatchPoint:   false
  stackSize:       0
 offsetAdjustment: 0
  maxAlignment:    1
  adjustsStack:    true
 hasCalls:        true
  stackProtector:  ''
  functionContext: ''
 maxCallFrameSize: 0
  cvBytesOfCalleeSavedRegisters: 0
 hasOpaqueSPAdjustment: false
  hasVAStart:      false
 hasMustTailInVarArgFunc: false
  hasTailCall:     false
 localFrameSize:  0
  savePoint:       ''
  restorePoint: ''
fixedStack:      []
stack:           []
entry_values: []
callSites:       []
debugValueSubstitutions: []
constants: []
machineFunctionInfo: {}
body:             |
  bb.0.bci_0:
 successors: %bb.1(0x80000000)
    liveins: $w1
  
    %1:gpr32 = COPY $w1
  
  bb.1.bci_19:
    ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
    $x0 = COPY $xzr
    STATEPOINT 0, 0, 1, $xzr, killed $x0, 2, 0, 2, 0, 2, 33, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, %1, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead $x0, implicit-def dead early-clobber $lr
 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
    $w0 = COPY $wzr
    STATEPOINT 0, 0, 1, $xzr, killed $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr
    ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp

...
```

Trunk: https://godbolt.org/z/Kf3vad54b

Here it's compiled fine on the older release (after removing new keys from the yaml): https://godbolt.org/z/fjoK3fszW
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWF9z2zgO_zT0C0ceiZL_PfhBcdbXXLObTJy2c08diIJkNhSpIynHzqe_oWTHipzt3radO09iS_iBIAiAIECwVpQKcUkmV2RyPYLGbbVZ5qCEhEqOMp0flmnh0NCtc7UlcUrYmrB1Kdy2ycZcV4StpdydfoLa6G_IHWFrrqtKtA9ZznkWh5zFxSwqWJiHkyxasMmUxSyJFjjjE5xEM3p7u6JbUKWlWlG3RVpoKfWzUCW1StQ1OioULQ1ifqAGS5BSc0rY3DSKPgu3pWQaSslpYBoV1GAtia87djINCVuMSXhNwtS_tH-t4i0pCAJKZqvuhVIHpkRHc3Ag4aAbR0l8TQljGFQkTjEQcxKn_j9mgYimJE7bL_82TUicTpNARMwzRGweqJh1tI2nMTaYxhlRSzxNAWD4dpoESisMpFDNPihV0xt1-s2xEArpTouckiQstCZsXjtDCZuEhK2oiJl_jghb0NIbilkHDmstlAtwD1UtkTBGazRWK5DCHagfrxopKZldnSbKuPgaetd3740yCHwLmcShSp4zWpxZKf1L7r8QPLs--qz9Ho_Hr_7qHhRUSOJ2ptPHG6LFQIpSVaicZ0g6Gu5rbdE-oGuMso_PgrfDC5D2OKn0gSVeMB_QDZZXoJ42KJG7C9T2yCc9zmgBQmJ-s0E5GOYM8Cf7gOWt2KFCH7EpdaY5wluwX4RarW_OYnuDOUhpf_vQrWUguMU-qWeh8hsl3ADdgv3twwoc3xp0newhuuG6RvveuHWjuERnL8YJe9c4KVTPCj00x6wpb5R15gGLgVxvH_sZjSgEByf0cDWdma69hE8WzWeQzYVuBkthHRrbCz-_qa-oaPVptwSX0Nm4rM008ZTaYIHGYB6cBHiYsBlhs3P4vRUVDUXF7EdFsV8nKr5cIEj5o9KSXyptcrnMvyVNih0Kdelag-Ure_Ictb8ruhPGNSCDPurTYE9gYaDCG1Xos0hh156Y5rlBax_hCYdhSKk4Zo7vMm3Bbhzwp9-hfg-79_vu3ifhix1EqfUDN-Kll9TCI6aLwqJL82-NdaesdsJoBfu0n-4opdEJg3ZIp9MRO6cYr9HKJ4te5uqhnUL3RjvkTre-OTrnxFA0ivstu9LK4d6dvXdkqGDv5be2PS3sVW2-uzo4tHeFZ0HcwA7zh95GfuXcgr2r4d8Nbu7fWmBo3c_pxoFx72UgD__eWPcIQt6oz2BSU_pk9p4Yz-N1Osnp41JzeLue84Is7LDnW_95ay6D1mlz5umjhdhj3ncTpV1hdjxj3iAXMCpnDl93r7mxj_njYCMc9rzch9vc3GbVTZNZJ1zjPXopRSvrQLkLoAK-FQrXx1A47qu2hjhtOF9KDg7qfsWVZeNwPCg0bMM5Wqu7SCBskmXjiLB5uJ-H3YewxbnSOOcI2iWDQblBu2IoTtv005Zbq7v7f73P7Kcav1POpNf_XKW3t5vHdPXx-u7LH92x0pVbVS0FFy7IsaA5Qu4l27oPHSk9hZJ9-EaT_Ys5w5vH9PG3-7ubPx5707SHz5GTreiTkBLzTpJ_Z6-Mg6c4_i78C5-6ZPu_mev_-vT9VUavr13pYc3XY23_FaDm9iJmLsLlTSTt_yTIEIw8BFzqLENf-yfyFEH9WP10_xOR-suD_vlt0D__eNA__7Qnf8ovf278Qa74GfsPep_X9rWPPppGtWfDoE_XeaalG2tTErZ-IWz9sYh3kE-SrD_6AxqkvlmfWcp1Vftuhbbd5bET1zJHQw1KBIu-5Yb2UsBgpXe-P1f4TJ_wYGlhdNWOOEAlfXr-L1QqvumPcWFfvozyZZwv4gWMcBlNF5MkYpMoGm2XfMF4GIW8mOJ0luVxxuMwXiwQoiRCmMUjsWQhi8MFY9FiMomi8SJGNs_i-QyihGMSkiTECoQc-57fzz0S1ja4nM6i-XwkIUNp21sQxtpbgTjlOscSlW-82epMPt07DOlbUKWnTa5HZtlehWRNaUkSSmGdPU_rhJO4fMDS14_HTucDqJIKRf_R3lU8pKPGyOXfvnBpF2QJW7dr-k8AAAD__4iQCGs">