| // RUN: rm -rf %t && mkdir -p %t |
| // RUN: %target-swift-frontend -parse-stdlib -parse-as-library -module-name TestMod -sil-serialize-all %S/Inputs/TestMod.sil -emit-module-path %t/TestMod.swiftmodule |
| // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all -inline -I %t %s | %FileCheck %s |
| |
| // Test if the CG is updated correctly during specialization and |
| // there is no crash because of a missing CG node for a deserialized function. |
| |
| sil_stage canonical |
| |
| import Builtin |
| import TestMod |
| |
| struct MyStruct { |
| } |
| |
| sil @_TF7TestMod10genlibfuncurFq_q_ : $@convention(thin) <τ_0_0> (@in τ_0_0) -> @out τ_0_0 |
| sil @_TF7TestMod11genlibfunc2urFq_q_ : $@convention(thin) <τ_0_0> (@in τ_0_0) -> @out τ_0_0 |
| |
| // CHECK-LABEL: sil @testit |
| sil @testit : $@convention(thin) () -> MyStruct { |
| bb0: |
| %x0 = function_ref @_TF7TestMod10genlibfuncurFq_q_ : $@convention(thin) <X> (@in X) -> @out X |
| %13 = function_ref @_TF7TestMod11genlibfunc2urFq_q_ : $@convention(thin) <τ_0_0> (@in τ_0_0) -> @out τ_0_0 |
| %14 = alloc_stack $MyStruct |
| %16 = alloc_stack $MyStruct |
| %17 = apply %13<MyStruct>(%16, %14) : $@convention(thin) <τ_0_0> (@in τ_0_0) -> @out τ_0_0 |
| %18 = struct $MyStruct () |
| dealloc_stack %16 : $*MyStruct |
| dealloc_stack %14 : $*MyStruct |
| return %18 : $MyStruct |
| } |
| |