// RUN: %target-sil-opt -enable-sil-verify-all %s -mem2reg | FileCheck %s

import Builtin
import Swift

sil @_Ts5printFT3valSi_T_ : $@convention(thin) (Int64) -> ()

// CHECK-LABEL: sil @liveness0
// CHECK-NOT: alloc_stack
sil @liveness0 : $@convention(thin) (Int64) -> () {
bb0(%0 : $Int64):
  %1 = alloc_stack $Int64, var, name "x"               // users: %39, %2
  store %0 to %1 : $*Int64                      // id: %2
  %3 = integer_literal $Builtin.Int64, 10         // user: %6
  %5 = struct_extract %0 : $Int64, #Int64._value   // user: %6
  %6 = builtin "cmp_eq_Int64"(%5 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int1 // user: %7
  cond_br %6, bb1, bb5                            // id: %7

bb1:                                              // Preds: bb0
  %8 = alloc_stack $Int64, var, name "y"               // users: %23, %19, %37, %11, %26
  %9 = integer_literal $Builtin.Int64, 20         // user: %10
  %10 = struct $Int64 (%9 : $Builtin.Int64)       // user: %11
  store %10 to %8 : $*Int64                     // id: %11
  %12 = integer_literal $Builtin.Int64, 3         // user: %15
  %14 = struct_extract %0 : $Int64, #Int64._value  // user: %15
  %15 = builtin "cmp_sgt_Int64"(%14 : $Builtin.Int64, %12 : $Builtin.Int64) : $Builtin.Int1 // user: %16
  cond_br %15, bb2, bb3                           // id: %16

bb2:                                              // Preds: bb1
  %17 = integer_literal $Builtin.Int64, 0         // user: %18
  %18 = struct $Int64 (%17 : $Builtin.Int64)      // user: %19
  store %18 to %8 : $*Int64                     // id: %19
  br bb4                                          // id: %20

bb3:                                              // Preds: bb1
  %21 = integer_literal $Builtin.Int64, 2         // user: %22
  %22 = struct $Int64 (%21 : $Builtin.Int64)      // user: %23
  store %22 to %8 : $*Int64                     // id: %23
  br bb4                                          // id: %24

bb4:                                              // Preds: bb3 bb2
  // function_ref  
  %25 = function_ref @_Ts5printFT3valSi_T_ : $@convention(thin) (Int64) -> () // user: %36
  %26 = load %8 : $*Int64                       // user: %30
  %27 = integer_literal $Builtin.Int64, 2         // user: %31
  %28 = integer_literal $Builtin.Int1, -1         // user: %31
  %30 = struct_extract %26 : $Int64, #Int64._value // user: %31
  %31 = builtin "sadd_with_overflow_Int64"(%30 : $Builtin.Int64, %27 : $Builtin.Int64, %28 : $Builtin.Int1) : $(Builtin.Int64, Builtin.Int1) // users: %33, %32
  %32 = tuple_extract %31 : $(Builtin.Int64, Builtin.Int1), 0 // user: %34
  %33 = tuple_extract %31 : $(Builtin.Int64, Builtin.Int1), 1 // user: %35
  %34 = struct $Int64 (%32 : $Builtin.Int64)      // user: %36
  cond_fail %33 : $Builtin.Int1                   // id: %35
  %36 = apply %25(%34) : $@convention(thin) (Int64) -> ()
  dealloc_stack %8 : $*Int64     // id: %37
  br bb5                                          // id: %38

// We don't need a PHI node here because the value is dead!
// CHECK: bb5:
bb5:                                              // Preds: bb4 bb0
  dealloc_stack %1 : $*Int64     // id: %39
  %40 = tuple ()                                  // user: %41
// CHECK: return
  return %40 : $()                                // id: %41
}

