// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-ir -verify -I %S/../IDE/Inputs/custom-modules %s
// REQUIRES: objc_interop

sil_stage canonical

import Builtin
import Swift
import ImportAsMember

sil @IAMStruct1CreateSimple : $@convention(c) () -> Struct1
sil @IAMStruct1Rotate : $@convention(c) (@in Struct1, Double) -> Struct1
sil @IAMStruct1SetAltitude : $@convention(c) (@inout Struct1, Double) -> ()

sil @invoke_methods : $@convention(thin) (Double) -> () {
entry(%z : $Double):
  %a = function_ref @IAMStruct1CreateSimple : $@convention(c) () -> Struct1
  %b = apply %a() : $@convention(c) () -> Struct1
  %c = alloc_stack $Struct1
  store %b to %c : $*Struct1
  %d = function_ref @IAMStruct1Rotate : $@convention(c) (@in Struct1, Double) -> Struct1
  %e = apply %d(%c, %z) : $@convention(c) (@in Struct1, Double) -> Struct1
  %f = function_ref @IAMStruct1SetAltitude : $@convention(c) (@inout Struct1, Double) -> ()
  apply %f(%c, %z) : $@convention(c) (@inout Struct1, Double) -> ()
  dealloc_stack %c : $*Struct1
  return undef : $()
}
