# RUN: llc -run-pass=branch-folder %s -o - | FileCheck %s

# PR33980

# Don't form conditional tail calls when the original conditional branch has
# the same true and false destination. Otherwise, when we remove the tail call
# successor we will also remove the fallthrough successor from the CFG.

# CHECK: body:             |
# CHECK:   bb.0.entry:
# CHECK:     successors: %bb.1(0x40000000)
# CHECK:     liveins: $edi
# CHECK:     CMP32ri8 killed $edi, 2, implicit-def $eflags
# CHECK:     TCRETURNdi64cc @mergeable_conditional_tailcall

# This was the unconditional branch to a dead MBB that we left behind before
# this bug was fixed.
# CHECK-NOT: JMP_1 %bb.-1

--- |
  ; ModuleID = 't.ll'
  source_filename = "t.ll"
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64--linux"

  @static_local_guard = external global i64, align 8

  ; Function Attrs: optsize
  define void @f(i32 %arg) #0 {
  entry:
    switch i32 %arg, label %sw.epilog [
      i32 0, label %sw.bb
      i32 1, label %sw.bb
      i32 2, label %sw.bb2
    ]

  sw.bb:                                            ; preds = %entry, %entry
    %tmp = load atomic i8, i8* bitcast (i64* @static_local_guard to i8*) acquire, align 8
    %guard.uninitialized.i = icmp eq i8 %tmp, 0
    br i1 %guard.uninitialized.i, label %init.check.i, label %return, !prof !0

  init.check.i:                                     ; preds = %sw.bb
    tail call void @initialize_static_local(i64* nonnull @static_local_guard)
    ret void

  sw.bb2:                                           ; preds = %entry
    tail call void @mergeable_conditional_tailcall()
    ret void

  sw.epilog:                                        ; preds = %entry
    tail call void @mergeable_conditional_tailcall()
    ret void

  return:                                           ; preds = %sw.bb
    ret void
  }

  declare void @mergeable_conditional_tailcall()

  declare void @initialize_static_local(i64*)

  ; Function Attrs: nounwind
  declare void @llvm.stackprotector(i8*, i8**) #1

  attributes #0 = { optsize }
  attributes #1 = { nounwind }

  !0 = !{!"branch_weights", i32 1, i32 1048575}

...
---
name:            f
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
liveins:
  - { reg: '$edi', virtual-reg: '' }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  stackProtector:  ''
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
  savePoint:       ''
  restorePoint:    ''
fixedStack:
stack:
constants:
body:             |
  bb.0.entry:
    successors: %bb.2(0x40000000), %bb.1(0x40000000)
    liveins: $edi

    CMP32ri8 killed $edi, 2, implicit-def $eflags
    JCC_1 %bb.2, 2, implicit $eflags
    JMP_1 %bb.1

  bb.1.entry:
    successors: %bb.4(0x40000000), %bb.5(0x40000000)
    liveins: $eflags

    JCC_1 %bb.4, 4, implicit killed $eflags
    JMP_1 %bb.5

  bb.2.sw.bb:
    successors: %bb.3(0x00000800), %bb.6(0x7ffff800)

    $al = MOV8rm $rip, 1, $noreg, @static_local_guard, $noreg :: (volatile load acquire (s8) from `i8* bitcast (i64* @static_local_guard to i8*)`, align 8)
    TEST8rr killed $al, $al, implicit-def $eflags
    JCC_1 %bb.6, 5, implicit killed $eflags
    JMP_1 %bb.3

  bb.3.init.check.i:
    dead $edi = MOV32ri @static_local_guard, implicit-def $rdi
    TCRETURNdi64 @initialize_static_local, 0, csr_64, implicit $rsp, implicit $rdi

  bb.4.sw.bb2:
    TCRETURNdi64 @mergeable_conditional_tailcall, 0, csr_64, implicit $rsp

  bb.5.sw.epilog:
    TCRETURNdi64 @mergeable_conditional_tailcall, 0, csr_64, implicit $rsp

  bb.6.return:
    RET 0

...
