blob: f6e26dbd228eecdc77942c8190d6054786a03787 [file] [log] [blame]
// RUN: %target-sil-opt -enable-sil-verify-all %s -mem2reg | %FileCheck %s
import Builtin
import Swift
sil [ossa] @_Ts5printFT3valSi_T_ : $@convention(thin) (Int64) -> ()
// CHECK-LABEL: sil [ossa] @liveness0 :
// CHECK-NOT: alloc_stack
sil [ossa] @liveness0 : $@convention(thin) (Int64) -> () {
bb0(%0 : $Int64):
%1 = alloc_stack $Int64, var, name "x"
store %0 to [trivial] %1 : $*Int64
%3 = integer_literal $Builtin.Int64, 10
%5 = struct_extract %0 : $Int64, #Int64._value
%6 = builtin "cmp_eq_Int64"(%5 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int1
cond_br %6, bb1, bb5
bb1:
%8 = alloc_stack $Int64, var, name "y"
%9 = integer_literal $Builtin.Int64, 20
%10 = struct $Int64 (%9 : $Builtin.Int64)
store %10 to [trivial] %8 : $*Int64
%12 = integer_literal $Builtin.Int64, 3
%14 = struct_extract %0 : $Int64, #Int64._value
%15 = builtin "cmp_sgt_Int64"(%14 : $Builtin.Int64, %12 : $Builtin.Int64) : $Builtin.Int1
cond_br %15, bb2, bb3
bb2:
%17 = integer_literal $Builtin.Int64, 0
%18 = struct $Int64 (%17 : $Builtin.Int64)
store %18 to [trivial] %8 : $*Int64
br bb4
bb3:
%21 = integer_literal $Builtin.Int64, 2
%22 = struct $Int64 (%21 : $Builtin.Int64)
store %22 to [trivial] %8 : $*Int64
br bb4
bb4:
// function_ref
%25 = function_ref @_Ts5printFT3valSi_T_ : $@convention(thin) (Int64) -> ()
%26 = load [trivial] %8 : $*Int64
%27 = integer_literal $Builtin.Int64, 2
%28 = integer_literal $Builtin.Int1, -1
%30 = struct_extract %26 : $Int64, #Int64._value
%31 = builtin "sadd_with_overflow_Int64"(%30 : $Builtin.Int64, %27 : $Builtin.Int64, %28 : $Builtin.Int1) : $(Builtin.Int64, Builtin.Int1)
%32 = tuple_extract %31 : $(Builtin.Int64, Builtin.Int1), 0
%33 = tuple_extract %31 : $(Builtin.Int64, Builtin.Int1), 1
%34 = struct $Int64 (%32 : $Builtin.Int64)
cond_fail %33 : $Builtin.Int1
%36 = apply %25(%34) : $@convention(thin) (Int64) -> ()
dealloc_stack %8 : $*Int64
br bb6
bb5:
br bb6
// We don't need a PHI node here because the value is dead!
// CHECK: bb5:
bb6:
dealloc_stack %1 : $*Int64
%40 = tuple ()
return %40 : $()
}
// CHECK-LABEL: } // end sil function 'liveness0'