<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">