protocol Proto { func at() -> Int } @inline(never) func testStackAllocation(p: Proto) -> Int { var a = [p, p, p] var b = 0 a.withUnsafeMutableBufferPointer { let array = $0 for i in 0.. Int{ return 1 } } @inline(never) func work(f: Foo) -> Int { var r = 0 for _ in 0..<100_000 { r += testStackAllocation(f) } return r } @inline(never) func hole(use: Int, _ N: Int) { if (N == 0) { print("use: \(use)") } } public func run_StackPromo(N: Int) { let foo = Foo() var r = 0 for i in 0..