| // RUN: %target-sil-func-extractor -assume-parsing-unqualified-ownership-sil %s -func=use_before_init | %FileCheck %s |
| // RUN: rm -rf %t |
| // RUN: mkdir %t |
| // RUN: %target-sil-func-extractor -assume-parsing-unqualified-ownership-sil %s -func=use_before_init -emit-sib -o %t/out.sib -module-name main && %target-sil-opt %t/out.sib -module-name main | %FileCheck %s |
| |
| import Builtin |
| import Swift |
| |
| // For now we do not remove dead functions so update this when that functionality is added. |
| |
| // CHECK-NOT: sil @takes_Int_inout : $@convention(thin) (@inout Int64) -> () |
| sil @takes_Int_inout : $@convention(thin) (@inout Int64) -> () |
| |
| // CHECK-NOT: sil @makesInt : $@convention(thin) () -> Int64 |
| sil @makesInt : $@convention(thin) () -> Int64 |
| |
| // CHECK-LABEL: sil @use_before_init : $@convention(thin) () -> Int64 { |
| // CHECK: bb0: |
| // CHECK: return |
| // CHECK: } |
| sil @use_before_init : $@convention(thin) () -> Int64 { |
| bb0: |
| %1 = alloc_box $<τ_0_0> { var τ_0_0 } <Int64> |
| %1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Int64>, 0 |
| %2 = load %1a : $*Int64 |
| %3 = function_ref @inout_uninit : $@convention(thin)() -> () |
| apply %3() : $@convention(thin) () -> () |
| strong_release %1 : $<τ_0_0> { var τ_0_0 } <Int64> |
| %4 = return %2 : $Int64 |
| } |
| |
| // CHECK-NOT: sil @inout_uninit : $@convention(thin) () -> () { |
| sil @inout_uninit : $@convention(thin) () -> () { |
| bb0: |
| %1 = alloc_box $<τ_0_0> { var τ_0_0 } <Int64> |
| %1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Int64>, 0 |
| %5 = function_ref @takes_Int_inout : $@convention(thin) (@inout Int64) -> () |
| %6 = apply %5(%1a) : $@convention(thin) (@inout Int64) -> () |
| |
| %0 = tuple () |
| strong_release %1 : $<τ_0_0> { var τ_0_0 } <Int64> |
| return %0 : $() |
| } |