blob: 4616ee73fa4d27b0922d7607dada3b2a3ed95470 [file] [log] [blame]
// RUN: %target-swift-frontend -O -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil -primary-file %s | %FileCheck %s
// We can't deserialize apply_inst with subst lists. When radar://14443304
// is fixed then we should convert this test to a SIL test.
struct YYY<T> {
@inline(never)
init(t : T) {m_t = t}
@inline(never) mutating
func AAA9(t t : T) -> Int { return AAA8(t: t) }
@inline(never) mutating
func AAA8(t t : T) -> Int { return AAA7(t: t) }
@inline(never) mutating
func AAA7(t t : T) -> Int { return AAA6(t: t) }
@inline(never) mutating
func AAA6(t t : T) -> Int { return AAA5(t: t) }
@inline(never) mutating
func AAA5(t t : T) -> Int { return AAA4(t: t) }
@inline(never) mutating
func AAA4(t t : T) -> Int { return AAA3(t: t) }
@inline(never) mutating
func AAA3(t t : T) -> Int { return AAA2(t: t) }
@inline(never) mutating
func AAA2(t t : T) -> Int { return AAA1(t: t) }
@inline(never) mutating
func AAA1(t t : T) -> Int { return AAA0(t: t) }
@inline(never) mutating
func AAA0(t t : T) -> Int { return foo(t: t) }
@inline(never) mutating
func foo(t t : T) -> Int { m_t = t; return 4 }
var m_t : T
}
func exp1() {
var II = YYY<Int>(t: 5)
print(II.AAA9(t: 4), terminator: "")
}
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA9{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA8{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA7{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA6{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA5{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA4{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA3{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA2{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: sil shared [noinline] @$s16specialize_chain3YYYV4AAA1{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: exp1
//CHECK: function_ref @$s16specialize_chain3YYYV{{[_0-9a-zA-Z]*}}fCSi_Tg5
//CHECK: function_ref @$s16specialize_chain3YYYV4AAA9{{[_0-9a-zA-Z]*}}FSi_Tg5
//CHECK: return