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

    <tr>
        <th>Summary</th>
        <td>
            Compiler hangs when using indirect labels
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    llc hangs on this reduced example:
```llvm
define void @test() unnamed_addr {
start:
  br label %bb1

bb1:
  callbr void asm "", "!i,!i,!i"()
  to label %bb1 [label %bb2, label %bb3, label %bb4]

bb2:
  br label %bb1

bb3:
  br label %bb1

bb4:
  br label %bb1

}
```
Example backtrace:
```
#0  0x00007ffff1a5ea65 in llvm::TargetInstrInfo::isUnpredicatedTerminator(llvm::MachineInstr const&) const () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#1 0x00007ffff40fdff8 in ?? () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#2  0x00007ffff40fe36c in ?? () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#3  0x00007ffff18179b8 in llvm::MachineBasicBlock::getFallThrough(bool) () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#4  0x00007ffff1817b0b in llvm::MachineBasicBlock::canFallThrough() () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#5  0x00007ffff1707d7a in ?? () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#6  0x00007ffff170454a in ?? () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#7 0x00007ffff170383b in ?? () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#8  0x00007ffff170a260 in ?? () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#9  0x00007ffff187110b in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#10 0x00007ffff160ad2f in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#11 0x00007ffff16109d3 in llvm::FPPassManager::runOnModule(llvm::Module&) () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#12 0x00007ffff160b428 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /usr/lib/llvm-17/bin/../lib/libLLVM-17.so.1
#13 0x000055555556523d in main ()
```
in which number 6 is the function that never returns. (I don't have a more recent version on hand locally, but trunk does time out as well on https://godbolt.org/z/xn1PGhbdG)

Reduced from the original Rust code: https://rust.godbolt.org/z/snGq3raxc
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEls1u3DYQx5-GexlkQVHfBx3suAoMxGgQpL0W_BhJbCjSIam106cvJG1sS2kBH7ytIciaEcn_bzgj7vAQdG8RG5Jfk_zmwKc4ON98m3hEb7U8CKe-N8ZIGLjtAzgLcdABPKpJogJ85OO9QZJeEXpD6BUp6HoZcxpXl8JOW4ST0wpIRiOGSFhFWA2TtXxE9QdXygMpr9fxIXIfnxYEEB4MF2iAsFyI5Kyz3GfzeaDkxgi_CvEwAmFsud6vT4km7P3mH1s5fsyPbiMEJL9-YS8LvbDTnZ2R_GbLxl4bRPragdnrBpLyZpeN1fxlTRYILr9Gz-U_pO1sspQC0EdKKS27rusSniMvctAWlsSmVyS9-sJ9j_HWhuhvbedWpw6_2XuPSkseUX1BP2rLo_OEVc8z77gctMVlKkhn54oo5opYnuFcHp13cxLbKXjCWqPFfDen8V1SEtYKbQlrj8fnV1p8_Pj73bukPAZ3TJ4iSV4GktFOdV01B0LSlqTtG4sx2KlhWsiLqaXbJFVJWYtqm6TzVl_zoOW1cfLr6u4xttyYL4N3Uz8QVgnnzEz2toDZT4CCilcBSm63gG8Pl2_hSlqqkl8sV8VeLcuzy6mVO7G0SsXFxKp9aJwV9GJq9a6myiT5l5pqJyujdvYTD2F94Sf7q_3h3hxJz87i7SstoRvkgnLFui1y-2mmvOOW9-j_X9hkC5vQWqWvg71zajK4PerPrkuAst2uioztTj-DPZff1-cXyLfjvXnC_s9w0zNuvv4VOUvVjDvy-VN50Yrsfo21hYdBywHsNAr0UIAOEAeE7lwGEAceweIJPXiMk7fhOC94C2qukTLCwE8IHEbnETxKtBFO6MM819m5tVNg3Nw_fZ-7GjFFiH6yX0E5DBD1iOCmCDzAAxqzTInxfvmmWEtY2zslnIlH53vC2r8Iax9t8unDINSH56CW--dz37js6RyD87rXlhv4PIUI0qm5Kdkt76cQjz9rBPvhW-r5ozyoJlV1WvMDNkmZ1FmV1ZQehoZLxmtRVVinQqiOlVRyThWjeaZUKdODbhhlGS1YmdAsyeiRZZKzMmUqwwqTUpGM4si1Oc4Jn7UPOoQJm7qo6vSwNGBh6Z0Zs_gAy8u5scxvDr5ZikRMfSAZNTrE8LxK1NFg896N99qgPzfXDwNamIK2PWirtEcZ1x4vHCZvmt2e6zhM4ijdeC7HH1V5792fKCNh7UITCGtX2lPD_g4AAP__fJJzvQ">