# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc %s -o - -run-pass=if-converter -verify-machineinstrs | FileCheck %s
# Make sure we correctly if-convert blocks containing an unanalyzable branch sequence.
# (In this case, multiple conditional branches)

--- |
  target triple = "thumbv7-unknown-linux-gnueabi"

  define dso_local ptr @fn1() {
  entry:
    br label %l_yes
  l_yes:
    ret ptr blockaddress(@fn1, %l_yes)
  }

  declare dso_local i32 @fn2(...)
...
---
name:            fn1
alignment:       2
tracksRegLiveness: true
body:             |
  ; CHECK-LABEL: name: fn1
  ; CHECK: bb.0:
  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r4, $lr
  ; CHECK-NEXT: {{  $}}
  ; CHECK-NEXT:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r4, killed $lr
  ; CHECK-NEXT:   t2CMPri killed renamable $r2, 34, 14 /* CC::al */, $noreg, implicit-def $cpsr
  ; CHECK-NEXT:   $r0 = t2MOVi 2, 1 /* CC::ne */, $cpsr, $noreg
  ; CHECK-NEXT:   $r0 = t2MOVi 3, 0 /* CC::eq */, killed $cpsr, $noreg, implicit killed $r0
  ; CHECK-NEXT:   tBL 14 /* CC::al */, $noreg, @fn2, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit killed $r1, implicit-def $sp, implicit-def dead $r0
  ; CHECK-NEXT:   t2CMPri $sp, 34, 14 /* CC::al */, $noreg, implicit-def $cpsr
  ; CHECK-NEXT:   t2Bcc %bb.2, 1 /* CC::ne */, $cpsr
  ; CHECK-NEXT:   t2Bcc %bb.2, 2 /* CC::hs */, killed $cpsr
  ; CHECK-NEXT:   t2B %bb.1, 14 /* CC::al */, $noreg
  ; CHECK-NEXT: {{  $}}
  ; CHECK-NEXT: bb.1:
  ; CHECK-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */
  ; CHECK-NEXT:   $sp = t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $pc
  ; CHECK-NEXT: {{  $}}
  ; CHECK-NEXT: bb.2.l_yes (ir-block-address-taken %ir-block.l_yes):
  ; CHECK-NEXT:   $sp = t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $pc
  bb.0:
    successors: %bb.1(0x40000000), %bb.2(0x40000000)
    liveins: $r0, $r1, $r2, $r4, $lr

    $sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r4, killed $lr
    t2CMPri killed renamable $r2, 34, 14, $noreg, implicit-def $cpsr
    t2Bcc %bb.2, 1, killed $cpsr

  bb.1:
    successors: %bb.3(0x40000000), %bb.4(0x40000000)
    liveins: $r1

    $r0 = t2MOVi 3, 14, $noreg, $noreg
    tBL 14, $noreg, @fn2, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit $r1, implicit-def $sp, implicit-def dead $r0
    t2CMPri $sp, 34, 14, $noreg, implicit-def $cpsr
    t2Bcc %bb.4, 1, $cpsr
    t2Bcc %bb.4, 2, killed $cpsr
    t2B %bb.3, 14, $noreg

  bb.2:
    successors: %bb.3(0x40000000), %bb.4(0x40000000)
    liveins: $r1

    $r0 = t2MOVi 2, 14, $noreg, $noreg
    tBL 14, $noreg, @fn2, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit $r0, implicit $r1, implicit-def $sp, implicit-def dead $r0
    t2CMPri $sp, 34, 14, $noreg, implicit-def $cpsr
    t2Bcc %bb.4, 1, $cpsr
    t2Bcc %bb.4, 2, killed $cpsr
    t2B %bb.3, 14, $noreg

  bb.3:
    INLINEASM &"", 1
    $sp = t2LDMIA_RET $sp, 14, $noreg, def $r4, def $pc

  bb.4.l_yes (ir-block-address-taken %ir-block.l_yes):
    $sp = t2LDMIA_RET $sp, 14, $noreg, def $r4, def $pc

...
