// RUN: %target-run-simple-swift(-parse-as-library -target %target-swift-5.1-abi-triple -Xfrontend -concurrency-model=task-to-thread -g -Xlinker -object_path_lto -Xlinker /tmp/abc.o) // REQUIRES: concurrency // REQUIRES: executable_test // REQUIRES: freestanding // REQUIRES: concurrency_runtime @_spi(_TaskToThreadModel) import _Concurrency import StdlibUnittest import Darwin var a = 0; func foo() async -> Int { a += 1 print("a is now \(a)") return a } func bar() async -> Int { a += 2 print("a is now \(a)") return a } func asyncFib(_ n: Int, _ expected_thread: pthread_t) async -> Int { expectEqual(pthread_self(), expected_thread); if n == 0 || n == 1 { return n } async let first = asyncFib(n-2, expected_thread) async let second = asyncFib(n-1, expected_thread) return (await second) + (await first) } func fib(_ n: Int) -> Int { var first = 0 var second = 1 for _ in 0..