blob: 5c599707beea9e8e7954889088905bde8f82171c [file] [log] [blame]
// RUN: %target-sil-opt -enable-sil-verify-all %s -licm | FileCheck %s
import Builtin
import Swift
sil_global @startTime : $Double
sil_global @sum1 : $Int32
// CHECK-LABEl: @sink_cond_fail
sil @sink_cond_fail : $@convention(thin) () -> () {
// CHECK: bb0
bb0:
%0 = global_addr @startTime : $*Double
%1 = global_addr @sum1 : $*Int32
%2 = integer_literal $Builtin.Int32, 0
%3 = struct $Int32 (%2 : $Builtin.Int32)
store %3 to %1 : $*Int32
%5 = function_ref @callee : $@convention(c) () -> Double
%6 = apply %5() : $@convention(c) () -> Double
store %6 to %0 : $*Double
%8 = integer_literal $Builtin.Int32, 1000000000
// CHECK: integer_literal $Builtin.Int32, 1
// CHECK: integer_literal $Builtin.Int1, -1
// CHECK: struct_element_addr {{.*}} : $*Int32, #Int32._value
br bb2(%2 : $Builtin.Int32)
// CHECK: bb1:
bb1:
%11 = tuple ()
return %11 : $()
// CHECK: bb2(
bb2(%13 : $Builtin.Int32):
%14 = integer_literal $Builtin.Int32, 1
%16 = integer_literal $Builtin.Int1, -1
// CHECK-NEXT: builtin
%17 = builtin "sadd_with_overflow_Word"(%13 : $Builtin.Int32, %14 : $Builtin.Int32, %16 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1)
// CHECK-NEXT: tuple_extract
%18 = tuple_extract %17 : $(Builtin.Int32, Builtin.Int1), 0
// CHECK-NEXT: tuple_extract
%19 = tuple_extract %17 : $(Builtin.Int32, Builtin.Int1), 1
cond_fail %19 : $Builtin.Int1
%21 = struct_element_addr %1 : $*Int32, #Int32._value
// CHECK-NEXT: load
%22 = load %21 : $*Builtin.Int32
// CHECK-NEXT: builtin
%23 = builtin "sadd_with_overflow_Word"(%22 : $Builtin.Int32, %14 : $Builtin.Int32, %16 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1)
// CHECK-NEXT: tuple_extract
%24 = tuple_extract %23 : $(Builtin.Int32, Builtin.Int1), 0
// CHECK-NEXT: tuple_extract
%25 = tuple_extract %23 : $(Builtin.Int32, Builtin.Int1), 1
cond_fail %25 : $Builtin.Int1
// CHECK-NEXT: struct
%27 = struct $Int32 (%24 : $Builtin.Int32)
// CHECK-NEXT: store
store %27 to %1 : $*Int32
// CHECK-NEXT: {{ cond_fail}}
// CHECK-NEXT: {{ cond_fail}}
%29 = builtin "cmp_eq_Word"(%18 : $Builtin.Int32, %8 : $Builtin.Int32) : $Builtin.Int1
cond_br %29, bb1, bb2(%18 : $Builtin.Int32)
}
sil @callee : $@convention(c) () -> Double